Commit 5c05e3d9 authored by chase's avatar chase

merge 档案管理

parent e918a93d
...@@ -2,6 +2,7 @@ package pwc.taxtech.atms.controller; ...@@ -2,6 +2,7 @@ package pwc.taxtech.atms.controller;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import pwc.taxtech.atms.dto.ReturnData; import pwc.taxtech.atms.dto.ReturnData;
...@@ -42,11 +43,11 @@ public class OperationLogFileTypeController { ...@@ -42,11 +43,11 @@ public class OperationLogFileTypeController {
*/ */
@RequestMapping("/selectListForLog") @RequestMapping("/selectListForLog")
@ResponseBody @ResponseBody
public ReturnData selectListForLog(List<String> fileTypeIds){ public ReturnData selectListForLog(@RequestBody OperationLogFileType operationLogFileType){
List<OperationLogFileType> operationLogFileType = operationLogFileTypeService.selectListForLog(fileTypeIds); List<OperationLogFileType> operationLogFileTypes = operationLogFileTypeService.selectListForLog(operationLogFileType.getFileTypeIds());
ReturnData returnData = new ReturnData(); ReturnData returnData = new ReturnData();
returnData.setItems(operationLogFileType); returnData.setItems(operationLogFileTypes);
returnData.setTotalCount(operationLogFileType.size()); returnData.setTotalCount(operationLogFileTypes.size());
return returnData; return returnData;
} }
......
package pwc.taxtech.atms.controller; package pwc.taxtech.atms.controller;
import com.github.pagehelper.PageInfo;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -14,22 +15,25 @@ import org.springframework.http.MediaType; ...@@ -14,22 +15,25 @@ import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import pwc.taxtech.atms.common.message.ErrorMessage; import pwc.taxtech.atms.common.message.ErrorMessage;
import pwc.taxtech.atms.common.message.ErrorMessageCN;
import pwc.taxtech.atms.common.util.MyAsserts; import pwc.taxtech.atms.common.util.MyAsserts;
import pwc.taxtech.atms.constant.enums.EnumAnalysisImportType; import pwc.taxtech.atms.constant.enums.EnumAnalysisImportType;
import pwc.taxtech.atms.constant.enums.EnumCitImportType; import pwc.taxtech.atms.constant.enums.EnumCitImportType;
import pwc.taxtech.atms.constant.enums.EnumImportType; import pwc.taxtech.atms.constant.enums.EnumImportType;
import pwc.taxtech.atms.dpo.TemplateUniqDto; import pwc.taxtech.atms.dpo.TemplateUniqDto;
import pwc.taxtech.atms.dto.*; import pwc.taxtech.atms.dto.*;
import pwc.taxtech.atms.dto.didiFileUpload.DidiFileIUploadParam;
import pwc.taxtech.atms.dto.didiFileUpload.DidiFileUploadDetailResult;
import pwc.taxtech.atms.dto.vatdto.TemplateByGroupDto; import pwc.taxtech.atms.dto.vatdto.TemplateByGroupDto;
import pwc.taxtech.atms.entity.Template; import pwc.taxtech.atms.entity.Template;
import pwc.taxtech.atms.exception.ApplicationException; import pwc.taxtech.atms.exception.ApplicationException;
import pwc.taxtech.atms.exception.BadParameterException; import pwc.taxtech.atms.exception.BadParameterException;
import pwc.taxtech.atms.exception.NotFoundException; import pwc.taxtech.atms.exception.NotFoundException;
import pwc.taxtech.atms.exception.ServiceException; import pwc.taxtech.atms.exception.ServiceException;
import pwc.taxtech.atms.service.impl.DidiFileUploadService;
import pwc.taxtech.atms.service.impl.HttpFileService; import pwc.taxtech.atms.service.impl.HttpFileService;
import pwc.taxtech.atms.service.impl.ReportUploadService; import pwc.taxtech.atms.service.impl.ReportUploadService;
import pwc.taxtech.atms.service.impl.TemplateServiceImpl; import pwc.taxtech.atms.service.impl.TemplateServiceImpl;
import pwc.taxtech.atms.vat.entity.PeriodTemplate;
import pwc.taxtech.atms.vat.entity.ReportUpload; import pwc.taxtech.atms.vat.entity.ReportUpload;
import javax.servlet.ServletContext; import javax.servlet.ServletContext;
...@@ -37,8 +41,10 @@ import javax.servlet.ServletOutputStream; ...@@ -37,8 +41,10 @@ import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.*; import java.io.*;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map;
@RestController @RestController
@RequestMapping(value = "api/v1/template") @RequestMapping(value = "api/v1/template")
...@@ -55,6 +61,8 @@ public class TemplateController extends BaseController { ...@@ -55,6 +61,8 @@ public class TemplateController extends BaseController {
@Autowired @Autowired
ReportUploadService reportUploadService; ReportUploadService reportUploadService;
@Autowired
DidiFileUploadService didiFileUploadService;
@RequestMapping(value = "get", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) @RequestMapping(value = "get", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public @ResponseBody public @ResponseBody
List<TemplateDto> get(@RequestParam(name = "templateGroupID") Long templateGroupId, @RequestParam(name = "reportType") String reportType) { List<TemplateDto> get(@RequestParam(name = "templateGroupID") Long templateGroupId, @RequestParam(name = "reportType") String reportType) {
...@@ -170,6 +178,81 @@ public class TemplateController extends BaseController { ...@@ -170,6 +178,81 @@ public class TemplateController extends BaseController {
} }
} }
@RequestMapping(value = "getPeriodTemplateJson", method = RequestMethod.POST, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public @ResponseBody
void getPeriodTemplateBlob(@RequestParam(name = "templateId") Long templateId,
@RequestParam(name = "period") Integer period,
@RequestParam(name = "projectId") String projectId,
HttpServletResponse response) throws URISyntaxException {
String filePath;
File templateFile;
InputStream inputStream = null;
List<PeriodTemplate> templates = templateService.getPeriodTemplates(templateId,period,projectId);
MyAsserts.assertNotEmpty(templates, new NotFoundException());
PeriodTemplate template = templates.get(0);
String templatePath = template.getPath();
MyAsserts.assertNotEmpty(templatePath, new NotFoundException());
filePath = this.getClass().getResource("").toURI().getPath();
String tempPath = filePath.substring(0, filePath.indexOf("classes") + "\\classes".length());
templateFile = new File(tempPath + templatePath);
OutputStream out = null;
try {
//如果是系统报表就取本地文件夹,如果不是就取FTP
if (template.getIsSystemType()) {
inputStream = new BufferedInputStream(new FileInputStream(templateFile));
} else {
if (templatePath.indexOf("/") <= 0) {
DidiFileIUploadParam fileParam = new DidiFileIUploadParam();
fileParam.setUuids(Arrays.asList(templatePath));
PageInfo<DidiFileUploadDetailResult> uploadDetail = didiFileUploadService.queryPage(fileParam);
Map<String, String> urlMap = null;
if (CollectionUtils.isNotEmpty(uploadDetail.getList())) {
templatePath = uploadDetail.getList().get(0).getViewHttpUrl();
}
}
inputStream = httpFileService.getUserTemplate(templatePath);
}
//客户端保存的文件名
String customFileName = "template_" + DateTime.now().toString("yyyyMMddHHmmss") + ".xlsx";
response.setHeader("Content-Disposition", String.format("inline; filename=\"" + customFileName + "\""));
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
// int len = 0;
// byte[] buffer = new byte[1024];
// out = response.getOutputStream();
// while ((len = inputStream.read(buffer)) > 0) {
// out.write(buffer, 0, len);
// }
out = response.getOutputStream();
IOUtils.copy(handleFomularView(inputStream), out);
out.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
logger.error("Error downloading template file template.xlsx", e);
throw new ApplicationException("Error downloading template file template.xlsx", e);
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
out = null;
}
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
inputStream = null;
}
}
}
private File getTempFile(String templatePath) throws URISyntaxException { private File getTempFile(String templatePath) throws URISyntaxException {
String filePath = this.getClass().getResource("").toURI().getPath(); String filePath = this.getClass().getResource("").toURI().getPath();
String tempPath = filePath.substring(0, filePath.indexOf("classes") + "\\classes".length()); String tempPath = filePath.substring(0, filePath.indexOf("classes") + "\\classes".length());
......
...@@ -51,7 +51,9 @@ public class OperationLogFileTypeServiceImpl { ...@@ -51,7 +51,9 @@ public class OperationLogFileTypeServiceImpl {
public List<OperationLogFileType> selectListForLog(List<String> fileTypeIds) { public List<OperationLogFileType> selectListForLog(List<String> fileTypeIds) {
OperationLogFileTypeExample example = new OperationLogFileTypeExample(); OperationLogFileTypeExample example = new OperationLogFileTypeExample();
OperationLogFileTypeExample.Criteria criteria = example.createCriteria(); OperationLogFileTypeExample.Criteria criteria = example.createCriteria();
criteria.andIdIn(fileTypeIds); if (null != fileTypeIds && fileTypeIds.size()>0){
criteria.andIdIn(fileTypeIds);
}
return operationLogFileTypeMapper.selectByExample(example); return operationLogFileTypeMapper.selectByExample(example);
} }
} }
...@@ -3230,4 +3230,8 @@ public class OrganizationServiceImpl extends BaseService{ ...@@ -3230,4 +3230,8 @@ public class OrganizationServiceImpl extends BaseService{
return organizationMapper.getMyOrgSelectList(uid); return organizationMapper.getMyOrgSelectList(uid);
} }
} }
public String queryBusinessByCompanyId(String companyId) {
return organizationMapper.queryBusinessByCompanyId(companyId);
}
} }
...@@ -47,6 +47,12 @@ public class TaxDocumentServiceImpl { ...@@ -47,6 +47,12 @@ public class TaxDocumentServiceImpl {
@Autowired @Autowired
DidiFileUploadService didiFileUploadService; DidiFileUploadService didiFileUploadService;
@Autowired
private BusinessUnitServiceImpl businessUnitService;
@Autowired
private OrganizationServiceImpl organizationService;
public List<TaxDocument> selectTaxDocumentList(TaxDocumentDto taxDocumentDto) { public List<TaxDocument> selectTaxDocumentList(TaxDocumentDto taxDocumentDto) {
List<TaxDocument> dataList = taxDocumentMapper.selectByExample(getExample(taxDocumentDto)); List<TaxDocument> dataList = taxDocumentMapper.selectByExample(getExample(taxDocumentDto));
DidiFileIUploadParam fileParam = new DidiFileIUploadParam(); DidiFileIUploadParam fileParam = new DidiFileIUploadParam();
...@@ -123,15 +129,15 @@ public class TaxDocumentServiceImpl { ...@@ -123,15 +129,15 @@ public class TaxDocumentServiceImpl {
} }
//实物索引号 physicalIndexNumber //实物索引号 physicalIndexNumber
if (StringUtils.isNotBlank(taxDocumentDto.getPhysicalIndexNumber())) { if (StringUtils.isNotBlank(taxDocumentDto.getPhysicalIndexNumber())) {
criteria.andPhysicalIndexNumberEqualTo(taxDocumentDto.getPhysicalIndexNumber()); criteria.andPhysicalIndexNumberLike("%" + taxDocumentDto.getPhysicalIndexNumber() + "%");
} }
//实物存放地点 storageArea //实物存放地点 storageArea
if (StringUtils.isNotBlank(taxDocumentDto.getStorageArea())) { if (StringUtils.isNotBlank(taxDocumentDto.getStorageArea())) {
criteria.andStorageAreaEqualTo(taxDocumentDto.getStorageArea()); criteria.andStorageAreaLike("%" + taxDocumentDto.getStorageArea() + "%");
} }
//实物保管人 keeper //实物保管人 keeper
if (StringUtils.isNotBlank(taxDocumentDto.getKeeper())) { if (StringUtils.isNotBlank(taxDocumentDto.getKeeper())) {
criteria.andKeeperEqualTo(taxDocumentDto.getKeeper()); criteria.andKeeperLike("%" + taxDocumentDto.getKeeper() + "%");
} }
//审批状态 auditStatus //审批状态 auditStatus
if (null != taxDocumentDto.getAuditStatus()) { if (null != taxDocumentDto.getAuditStatus()) {
...@@ -179,6 +185,11 @@ public class TaxDocumentServiceImpl { ...@@ -179,6 +185,11 @@ public class TaxDocumentServiceImpl {
taxDocument.setUploadTime(new Date()); taxDocument.setUploadTime(new Date());
taxDocument.setYearRedundancy(Calendar.getInstance().get(Calendar.YEAR)); taxDocument.setYearRedundancy(Calendar.getInstance().get(Calendar.YEAR));
Long id = taxDocumentMapper.insert(taxDocument); Long id = taxDocumentMapper.insert(taxDocument);
//根据公司Id 设置业务线
String businessLine = organizationService.queryBusinessByCompanyId(taxDocument.getCompanyId());
if (StringUtils.isNotBlank(businessLine)) {
taxDocument.setBusinessLine(businessLine);
}
if (id > 0) { if (id > 0) {
OperationLogTaxDocument actionEntity = buildOperationLogTaxDocument(); OperationLogTaxDocument actionEntity = buildOperationLogTaxDocument();
actionEntity.setId(id.toString()); actionEntity.setId(id.toString());
...@@ -232,24 +243,22 @@ public class TaxDocumentServiceImpl { ...@@ -232,24 +243,22 @@ public class TaxDocumentServiceImpl {
@Transactional @Transactional
public boolean batchDelete(List<Long> ids) { public boolean batchDelete(List<Long> ids) {
try { try {
if ( null == ids || ids.size() < 1) { if (null == ids || ids.size() < 1) {
return false; return false;
} }
for (Long id : ids) { int num = taxDocumentMapper.batchDelete(ids);
int num = taxDocumentMapper.deleteByPrimaryKey(id); if (num > 0) {
if (num > 0) { for (Long id : ids) {
OperationLogTaxDocument actionEntity = buildOperationLogTaxDocument(); OperationLogTaxDocument actionEntity = buildOperationLogTaxDocument();
actionEntity.setOperationAction("删除"); actionEntity.setOperationAction("删除");
actionEntity.setId(id.toString()); actionEntity.setId(id.toString());
boolean result = operationLogTaxDocService.addTaxDocumentList(actionEntity); boolean result = operationLogTaxDocService.addTaxDocumentList(actionEntity);
if (result) { if (!result) {
return true;
} else {
throw new RuntimeException("TaxDocumentServiceImpl batchDeleteTaxDocument log error"); throw new RuntimeException("TaxDocumentServiceImpl batchDeleteTaxDocument log error");
} }
} else {
return false;
} }
} else {
return false;
} }
return true; return true;
} catch (Exception e) { } catch (Exception e) {
......
...@@ -18,8 +18,12 @@ import pwc.taxtech.atms.dto.didiFileUpload.DidiFileUploadDetailResult; ...@@ -18,8 +18,12 @@ import pwc.taxtech.atms.dto.didiFileUpload.DidiFileUploadDetailResult;
import pwc.taxtech.atms.dto.vatdto.TemplateByGroupDto; import pwc.taxtech.atms.dto.vatdto.TemplateByGroupDto;
import pwc.taxtech.atms.entity.*; import pwc.taxtech.atms.entity.*;
import pwc.taxtech.atms.vat.dao.PeriodReportMapper; import pwc.taxtech.atms.vat.dao.PeriodReportMapper;
import pwc.taxtech.atms.vat.dao.PeriodTemplateMapper;
import pwc.taxtech.atms.vat.entity.PeriodReportExample; import pwc.taxtech.atms.vat.entity.PeriodReportExample;
import pwc.taxtech.atms.vat.entity.PeriodTemplate;
import pwc.taxtech.atms.vat.entity.PeriodTemplateExample;
import javax.annotation.Resource;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -28,9 +32,11 @@ import static java.util.stream.Collectors.groupingBy; ...@@ -28,9 +32,11 @@ import static java.util.stream.Collectors.groupingBy;
@Service @Service
public class TemplateServiceImpl extends AbstractService { public class TemplateServiceImpl extends AbstractService {
@Autowired @Resource
private PeriodReportMapper periodReportMapper; private PeriodReportMapper periodReportMapper;
@Resource
private PeriodTemplateMapper periodTemplateMapper;
@Autowired @Autowired
private DidiFileUploadService didiFileUploadService; private DidiFileUploadService didiFileUploadService;
public void addExistTemplate(TemplateAddExistDto templateAddExistDto){ public void addExistTemplate(TemplateAddExistDto templateAddExistDto){
...@@ -112,6 +118,12 @@ public class TemplateServiceImpl extends AbstractService { ...@@ -112,6 +118,12 @@ public class TemplateServiceImpl extends AbstractService {
return templateDtos; return templateDtos;
} }
public List<PeriodTemplate> getPeriodTemplates(Long templateId,Integer period,String projectId ){
PeriodTemplateExample example = new PeriodTemplateExample();
example.createCriteria().andProjectIdEqualTo(projectId).andTemplateIdEqualTo(templateId).andPeriodEqualTo(period);
return periodTemplateMapper.selectByExample(example);
}
public String getTemplatePath(Long templateId) { public String getTemplatePath(Long templateId) {
String result = ""; String result = "";
Template template = templateMapper.selectByPrimaryKey(templateId); Template template = templateMapper.selectByPrimaryKey(templateId);
......
package pwc.taxtech.atms.dao; package pwc.taxtech.atms.dao;
import java.util.List;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
...@@ -10,6 +9,8 @@ import pwc.taxtech.atms.dpo.*; ...@@ -10,6 +9,8 @@ import pwc.taxtech.atms.dpo.*;
import pwc.taxtech.atms.entity.Organization; import pwc.taxtech.atms.entity.Organization;
import pwc.taxtech.atms.entity.OrganizationExample; import pwc.taxtech.atms.entity.OrganizationExample;
import java.util.List;
@Mapper @Mapper
public interface OrganizationMapper extends MyMapper { public interface OrganizationMapper extends MyMapper {
/** /**
...@@ -138,4 +139,6 @@ public interface OrganizationMapper extends MyMapper { ...@@ -138,4 +139,6 @@ public interface OrganizationMapper extends MyMapper {
@Select("select id, name from organization;") @Select("select id, name from organization;")
List<OrgSelectDto> getAllOrgSelectList(); List<OrgSelectDto> getAllOrgSelectList();
String queryBusinessByCompanyId(String companyId);
} }
\ No newline at end of file
...@@ -113,4 +113,6 @@ public interface TaxDocumentMapper extends MyMapper { ...@@ -113,4 +113,6 @@ public interface TaxDocumentMapper extends MyMapper {
* @return * @return
*/ */
int updateEnableToF(Long id); int updateEnableToF(Long id);
int batchDelete(List<Long> ids);
} }
\ No newline at end of file
...@@ -2,6 +2,7 @@ package pwc.taxtech.atms.entity; ...@@ -2,6 +2,7 @@ package pwc.taxtech.atms.entity;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* *
...@@ -110,6 +111,16 @@ public class OperationLogFileType implements Serializable { ...@@ -110,6 +111,16 @@ public class OperationLogFileType implements Serializable {
*/ */
private Date createTime; private Date createTime;
private List<String> fileTypeIds;
public List<String> getFileTypeIds() {
return fileTypeIds;
}
public void setFileTypeIds(List<String> fileTypeIds) {
this.fileTypeIds = fileTypeIds;
}
/** /**
* This field was generated by MyBatis Generator. * This field was generated by MyBatis Generator.
* This field corresponds to the database table operation_log_file_type * This field corresponds to the database table operation_log_file_type
......
...@@ -500,6 +500,11 @@ public class TaxDocumentExample { ...@@ -500,6 +500,11 @@ public class TaxDocumentExample {
return (Criteria) this; return (Criteria) this;
} }
public Criteria andPhysicalIndexNumberLike(String value) {
addCriterion("physical_index_number like", value, "physicalIndexNumber");
return (Criteria) this;
}
public Criteria andFileNameNotLike(String value) { public Criteria andFileNameNotLike(String value) {
addCriterion("file_name not like", value, "fileName"); addCriterion("file_name not like", value, "fileName");
return (Criteria) this; return (Criteria) this;
......
...@@ -671,4 +671,10 @@ ...@@ -671,4 +671,10 @@
ACC_SET.is_active = 1 ACC_SET.is_active = 1
AND SET_ORG.enterprise_account_set_id = ACC_SET.id AND SET_ORG.enterprise_account_set_id = ACC_SET.id
</select> </select>
<select id="queryBusinessByCompanyId" resultType="string">
SELECT bus.name
FROM organization org
LEFT JOIN business_unit bus ON org.business_unit_id = bus.id
WHERE bus.is_active = 1 AND org.id = #{companyId}
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -150,6 +150,15 @@ ...@@ -150,6 +150,15 @@
delete from tax_document delete from tax_document
where id = #{id,jdbcType=BIGINT} where id = #{id,jdbcType=BIGINT}
</delete> </delete>
<delete id="batchDelete">
DELETE FROM tax_document
WHERE id IN
<foreach collection="list" item="id" separator="," open="(" close=")">
#{id}
</foreach>
</delete>
<delete id="deleteByExample" parameterType="pwc.taxtech.atms.entity.TaxDocumentExample"> <delete id="deleteByExample" parameterType="pwc.taxtech.atms.entity.TaxDocumentExample">
<!-- <!--
WARNING - @mbg.generated WARNING - @mbg.generated
......
...@@ -70,6 +70,7 @@ ...@@ -70,6 +70,7 @@
"ProjectYearCol" : "年份", "ProjectYearCol" : "年份",
"AssignRoleCol" : "分配角色", "AssignRoleCol" : "分配角色",
"SequenceNoCol":"序号", "SequenceNoCol":"序号",
"DocumentID":"Doc ID",
"TaxGroup":"税种", "TaxGroup":"税种",
"ReportTemplate":"Report Template", "ReportTemplate":"Report Template",
......
...@@ -93,6 +93,7 @@ ...@@ -93,6 +93,7 @@
"ProjectYearCol": "年份", "ProjectYearCol": "年份",
"AssignRoleCol": "分配角色", "AssignRoleCol": "分配角色",
"SequenceNoCol": "序号", "SequenceNoCol": "序号",
"DocumentID": "档案ID",
"TaxGroup":"税种", "TaxGroup":"税种",
"DocumentAttr": "档案属性", "DocumentAttr": "档案属性",
"DocumentType": "档案类型", "DocumentType": "档案类型",
......
...@@ -82,7 +82,7 @@ ...@@ -82,7 +82,7 @@
columns: [ columns: [
{ {
dataField: "id", dataField: "id",
caption: $translate.instant('SequenceNoCol'), caption: $translate.instant('DocumentID'),
allowHeaderFiltering: true, allowHeaderFiltering: true,
cellTemplate: function (container, options) { cellTemplate: function (container, options) {
try { try {
...@@ -185,15 +185,15 @@ ...@@ -185,15 +185,15 @@
} }
}, },
{ {
dataField: "createTime", dataField: "updateTime",
caption: $translate.instant('CreatedTime'), caption: $translate.instant('UpdateTime'),
allowHeaderFiltering: true, allowHeaderFiltering: true,
cellTemplate: function (container, options) { cellTemplate: function (container, options) {
try { try {
var style = options.data.status == 1 ? '' : 'style="color:#999"'; var style = options.data.status == 1 ? '' : 'style="color:#999"';
if (options.data.createTime) { if (options.data.updateTime) {
$('<span '+style+'>').text($filter('date')(options.data.createTime, 'yyyy-MM-dd')).appendTo(container); $('<span '+style+'>').text($filter('date')(options.data.updateTime, 'yyyy-MM-dd')).appendTo(container);
} else { } else {
$('<span>').text().appendTo(container); $('<span>').text().appendTo(container);
} }
...@@ -209,8 +209,10 @@ ...@@ -209,8 +209,10 @@
cellTemplate: function (container, options) { cellTemplate: function (container, options) {
try { try {
if (options.data.status == 1) { if (options.data.status == 1) {
$('<span>').text($translate.instant('Enabled')).appendTo(container); options.data.status = $translate.instant('Enabled');
$('<span>').text(options.data.status).appendTo(container);
} else { } else {
options.data.status = $translate.instant('Disabled');
$('<span style="color:#999">').text($translate.instant('Disabled')).appendTo(container); $('<span style="color:#999">').text($translate.instant('Disabled')).appendTo(container);
} }
} catch (e) { } catch (e) {
...@@ -224,13 +226,11 @@ ...@@ -224,13 +226,11 @@
allowHeaderFiltering: false, allowHeaderFiltering: false,
cellTemplate: function (container, options) { cellTemplate: function (container, options) {
try { try {
var eventTarget = $('<a style="color:#506bf7;" href="javascript:void(0)" ng-click="openEditPop(' var eventTarget = $('<a style="color:#506bf7;" data-id="'+options.data.id+'" href="javascript:void(0)"><span>'+$translate.instant("Edit")+'</span></a>');
+ options.data.id eventTarget.off('click').on('click',function(){
+ ')">' $scope.openEditPop(options.data.id);
+ '<span>{{"Edit"|translate}}</span></a>'); });
$compile(eventTarget)($scope);
container.append(eventTarget); container.append(eventTarget);
} catch (e) { } catch (e) {
$log.error(e); $log.error(e);
} }
...@@ -248,6 +248,10 @@ ...@@ -248,6 +248,10 @@
$scope.localData.forEach(function (item) { $scope.localData.forEach(function (item) {
if (item.id == rowId) { if (item.id == rowId) {
$scope.editModel = angular.copy(item); $scope.editModel = angular.copy(item);
if($scope.editModel.status != 1 || $scope.editModel.status != 0){
// 特殊处理状态值,1 = “已启用”, 0 = “已禁用”
$scope.editModel.status = item.status == $translate.instant("Enabled") ? 1 : 0;
}
} }
}); });
} }
......
...@@ -145,12 +145,14 @@ ...@@ -145,12 +145,14 @@
<label class="col-sm-5 DM-state-label"> <label class="col-sm-5 DM-state-label">
<input type="radio" name="editModelState" <input type="radio" name="editModelState"
value=1 value=1
ng-checked="editModel.status == 1"
ng-model="editModel.status" required /> ng-model="editModel.status" required />
<span translate="Enable"></span> <span translate="Enable"></span>
</label> </label>
<label class="col-sm-5 DM-state-label"> <label class="col-sm-5 DM-state-label">
<input type="radio" name="editModelState" <input type="radio" name="editModelState"
value=0 value=0
ng-checked="editModel.status == 0"
ng-model="editModel.status" required /> ng-model="editModel.status" required />
<span translate="Disable"></span> <span translate="Disable"></span>
</label> </label>
......
...@@ -13,6 +13,16 @@ webservices.factory('templateService', ['$log', '$http', '$q', 'apiConfig', 'htt ...@@ -13,6 +13,16 @@ webservices.factory('templateService', ['$log', '$http', '$q', 'apiConfig', 'htt
return getJsonFromExcel(templateID); return getJsonFromExcel(templateID);
//} //}
}; };
var getPeriodTemplateJson = function (templateId,period,projectId) {
//return $http.get('/template/getTemplateJson?templateID=' + templateID, apiConfig.create());
//var url = '/template/getTemplateJson?templateID=' + templateID;
//var result = httpCacheService.get(url);
// if (result.finishedCache) {
// return result;
// } else {
return getJsonFromExcelForPeriod(templateId,period,projectId);
//}
};
var getCookie = function (cname) { var getCookie = function (cname) {
...@@ -105,6 +115,38 @@ webservices.factory('templateService', ['$log', '$http', '$q', 'apiConfig', 'htt ...@@ -105,6 +115,38 @@ webservices.factory('templateService', ['$log', '$http', '$q', 'apiConfig', 'htt
}; };
var getJsonFromExcelForPeriod = function (templateID,period,projectId) {
var deferred = $q.defer();
var promise = deferred.promise;
var url = loginContext.apiHost + constant.webapi.prefix + '/template/getPeriodTemplateJson?templateId=' + templateID+"&period="+period+"&projectId="+projectId;
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true); // 也可以使用POST方式,根据接口
xhr.responseType = "blob"; // 返回类型blob
var apiTokenObj = JSON.parse(getCookie('AtmsApiToken'));
var apiToken = apiTokenObj.access_token;
var tokenType = apiTokenObj.token_type;
xhr.setRequestHeader('Authorization', tokenType + ' ' + apiToken);
// 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑
xhr.onload = function () {
// 请求完成
if (this.status === 200) {
// 返回200
var blob = this.response;
var excelIo = new GC.Spread.Excel.IO();
excelIo.open(blob, function (json) {
deferred.resolve(json);
}, function (e) {
// console.error(e.errorMessage);
//alert(e.errorMessage);
deferred.reject(e.errorMessage);
}, {});
}
};
// 发送ajax请求
xhr.send();
return promise;
};
var renderSpreadExcelSimple = function (id, templateID) { var renderSpreadExcelSimple = function (id, templateID) {
var deferred = $q.defer(); var deferred = $q.defer();
var promise = deferred.promise; var promise = deferred.promise;
...@@ -126,6 +168,7 @@ webservices.factory('templateService', ['$log', '$http', '$q', 'apiConfig', 'htt ...@@ -126,6 +168,7 @@ webservices.factory('templateService', ['$log', '$http', '$q', 'apiConfig', 'htt
renderSpreadExcelSimple: renderSpreadExcelSimple, renderSpreadExcelSimple: renderSpreadExcelSimple,
setRowColName: setRowColName, setRowColName: setRowColName,
getTemplateJson: getTemplateJson, getTemplateJson: getTemplateJson,
getPeriodTemplateJson:getPeriodTemplateJson,
downloadTemplate: function (fileType) { downloadTemplate: function (fileType) {
return $http.get('/template/file/downloadTemplate?fileType=' + fileType , apiConfig.create({ responseType: 'arraybuffer' })); return $http.get('/template/file/downloadTemplate?fileType=' + fileType , apiConfig.create({ responseType: 'arraybuffer' }));
}, },
......
...@@ -68,20 +68,42 @@ ...@@ -68,20 +68,42 @@
overflow: hidden; overflow: hidden;
outline: none; outline: none;
} }
.input-reset-button:before { .input-arrow-drop-button {
position: absolute;
margin: 0;
border: 0;
background: #fff;
top: 0;
right: 0;
color: #969696;
overflow: hidden;
outline: none;
}
.input-arrow-drop-button:before {
content: "▾";
height: inherit;
width: inherit;
position: relative;
background: inherit;
}
.input-reset-button:after {
content: "x"; content: "x";
height: inherit; height: inherit;
width: inherit; width: inherit;
position: relative; position: relative;
background: inherit;
} }
</style> </style>
<div class="select-simulator"> <div class="select-simulator">
<input class="for-fake-input" <input class="for-fake-input"
ng-click="showMenu();" ng-click="showMenu();"
placeholder="请选择" placeholder="请选择"
title="{{selected}}"
readonly readonly
ng-model="selected"> ng-model="selected">
<button class="input-reset-button" <button type="button" class="input-arrow-drop-button">
</button>
<button type="button" class="input-reset-button"
ng-click="clearInput()" ng-click="clearInput()"
ng-mouseleave="activeWatcher()" ng-mouseleave="activeWatcher()"
ng-mouseenter="closeWatcher()" ng-mouseenter="closeWatcher()"
...@@ -99,7 +121,7 @@ ...@@ -99,7 +121,7 @@
<input type="{{optionType}}" <input type="{{optionType}}"
name="simulatorOptionMenu" name="simulatorOptionMenu"
value="{{value}}" value="{{value}}"
ng-checked="defaultChecked[optionKeys[$index]]" ng-checked="selected.indexOf(optionValues[$index]) > -1"
data-key="{{optionKeys[$index]}}"/> data-key="{{optionKeys[$index]}}"/>
<span>{{value}}</span> <span>{{value}}</span>
</label> </label>
......
...@@ -43,12 +43,12 @@ frameworkModule.directive('appMultiSelect', ['$log', ...@@ -43,12 +43,12 @@ frameworkModule.directive('appMultiSelect', ['$log',
function runDefaultChecked(){ function runDefaultChecked(){
if($scope.defaultChecked.length){ if($scope.defaultChecked.length){
// 一般defaultChecked就是optionMap的下表数组 // 一般defaultChecked就是optionMap的下表数组
$scope.optionKeys.forEach(function (item) { $scope.optionKeys.forEach(function (key) {
var defaultLen = $scope.defaultChecked.length; var defaultLen = $scope.defaultChecked.length;
while(defaultLen--){ while(defaultLen--){
if($scope.defaultChecked[defaultLen] == item){ if($scope.defaultChecked[defaultLen] == $scope.optionMap[key]){
$scope.checkedKeys.push(item); $scope.checkedKeys.push(key);
$scope.checkedValues.push($scope.optionMap[item]); $scope.checkedValues.push($scope.optionMap[key]);
break; break;
} }
} }
...@@ -142,7 +142,7 @@ frameworkModule.directive('appMultiSelect', ['$log', ...@@ -142,7 +142,7 @@ frameworkModule.directive('appMultiSelect', ['$log',
$scope.checkedValues.length = 0; $scope.checkedValues.length = 0;
$scope.checkedKeys.length = 0; $scope.checkedKeys.length = 0;
$scope.selected = ""; $scope.selected = "";
confirmSelected(false); // confirmSelected(false);
} else { } else {
// 如果弹出下拉菜单时,当前输入框内容为空,就直接关闭下拉菜单 // 如果弹出下拉菜单时,当前输入框内容为空,就直接关闭下拉菜单
$scope.showOptionMenu = false; $scope.showOptionMenu = false;
......
...@@ -105,11 +105,11 @@ frameworkModule.controller('appUsrOperateLogController', ...@@ -105,11 +105,11 @@ frameworkModule.controller('appUsrOperateLogController',
} }
} }
}, },
{ // {
dataField: "operationObject", // dataField: "operationObject",
caption: $translate.instant('LogOperateObject'), // caption: $translate.instant('LogOperateObject'),
allowHeaderFiltering: true, // allowHeaderFiltering: true,
}, // },
{ {
dataField: "operationAction", dataField: "operationAction",
caption: $translate.instant('LogOperationDescription'), caption: $translate.instant('LogOperationDescription'),
......
...@@ -54,14 +54,21 @@ ...@@ -54,14 +54,21 @@
max-width: 68%; max-width: 68%;
padding-left: 1rem; padding-left: 1rem;
box-sizing: border-box; box-sizing: border-box;
position: relative;
} }
.TDL-query-bar .TDL-query-val .TDL-query-val-multi { .TDL-query-bar .TDL-query-val .TDL-query-val-multi {
width: 45%; width: 45%;
max-width: 45%; max-width: 45%;
left: 0;
display: inline-block; display: inline-block;
margin: 0; margin: 0;
position: absolute;
top: -24px;
left: 1rem;
}
.TDL-query-bar .TDL-query-val .TDL-query-val-multi:nth-child(even){
left: 45%;
border-radius: 0 4px 4px 0;
} }
.TDL-query-bar .TDL-query-more { .TDL-query-bar .TDL-query-more {
...@@ -467,8 +474,16 @@ ...@@ -467,8 +474,16 @@
<span translate="TaxType"></span> <span translate="TaxType"></span>
</div> </div>
<div class="TDL-query-val"> <div class="TDL-query-val">
<input type="text" class="form-control radius3" <!--<input type="text" class="form-control radius3"-->
ng-model="queryFieldModel.taxType"/> <!--ng-model="queryFieldModel.taxType"/>-->
<select ng-model="queryFieldModel.taxType"
class="form-control radius3">
<option ng-repeat="taxType in taxTypeSelects track by $index"
ng-selected="(queryFieldModel.taxType == taxType)"
value="{{taxType}}">{{taxType}}
</option>
</select>
</div> </div>
</div> </div>
<div class="TDL-query-block"> <div class="TDL-query-block">
...@@ -728,7 +743,7 @@ ...@@ -728,7 +743,7 @@
</label> </label>
<div class="col-sm-11" style="width:61.67%"> <div class="col-sm-11" style="width:61.67%">
<input type='text' placeholder="{{'PleaseSelected' | translate}}" date-time-picker <input type='text' placeholder="{{'PleaseSelected' | translate}}" date-time-picker
data-date-format="yyyy/mm/dd" data-date-format="yyyy/mm"
class="form-control" ng-model="editFieldModel.ownTime" required class="form-control" ng-model="editFieldModel.ownTime" required
data-min-view-mode="1"/> data-min-view-mode="1"/>
</div> </div>
...@@ -963,7 +978,7 @@ ...@@ -963,7 +978,7 @@
</label> </label>
<div class="col-sm-11" style="width:61.67%"> <div class="col-sm-11" style="width:61.67%">
<input type='text' placeholder="{{'PleaseSelected' | translate}}" <input type='text' placeholder="{{'PleaseSelected' | translate}}"
date-time-picker data-date-format="yyyy/mm/dd" date-time-picker data-date-format="yyyy/mm"
class="form-control" ng-model="editFieldItem.ownTime" required class="form-control" ng-model="editFieldItem.ownTime" required
data-min-view-mode="1"/> data-min-view-mode="1"/>
</div> </div>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment