From 2d7b81bd9377e1ce5353e0e9106cf53c45846c6c Mon Sep 17 00:00:00 2001 From: liuyuxin Date: Mon, 20 Apr 2026 09:12:46 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=B3=E6=8A=A5=E5=8D=95=E9=83=A8=E5=88=86?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/WornUniqueCodeMaterialMapper.java | 2 + .../controller/WornDeclareBillController.java | 123 ++++ .../controller/WornDeclareFileController.java | 104 +++ .../controller/WornDeclareItemController.java | 104 +++ .../controller/WornInboundBillController.java | 10 +- .../WornTechnicalAppraisalController.java | 18 +- .../project/worn/domain/WornDeclareBill.java | 188 +++++ .../project/worn/domain/WornDeclareFile.java | 169 +++++ .../project/worn/domain/WornDeclareItem.java | 139 ++++ .../worn/domain/WornTechnicalAppraisal.java | 7 +- .../domain/dto/WornOutboundUpdateDTO.java | 16 + .../worn/mapper/WornDeclareBillMapper.java | 72 ++ .../worn/mapper/WornDeclareFileMapper.java | 70 ++ .../worn/mapper/WornDeclareItemMapper.java | 85 +++ .../WornTechnicalAppraisalFileMapper.java | 1 + .../mapper/WornTechnicalAppraisalMapper.java | 2 +- .../worn/service/IWornDeclareBillService.java | 75 ++ .../worn/service/IWornDeclareFileService.java | 61 ++ .../worn/service/IWornDeclareItemService.java | 61 ++ .../worn/service/IWornInboundBillService.java | 2 + .../IWornTechnicalAppraisalService.java | 2 +- .../impl/WornDeclareBillServiceImpl.java | 669 ++++++++++++++++++ .../impl/WornDeclareFileServiceImpl.java | 95 +++ .../impl/WornDeclareItemServiceImpl.java | 96 +++ .../impl/WornInboundBillServiceImpl.java | 2 +- .../impl/WornOutboundItemServiceImpl.java | 62 +- .../WornTechnicalAppraisalServiceImpl.java | 200 +++++- .../unique/WornUniqueCodeMaterialMapper.xml | 13 + .../mybatis/worn/WornDeclareBillMapper.xml | 137 ++++ .../mybatis/worn/WornDeclareFileMapper.xml | 122 ++++ .../mybatis/worn/WornDeclareItemMapper.xml | 245 +++++++ .../mybatis/worn/WornOutboundBillMapper.xml | 1 + .../worn/WornTechnicalAppraisalFileMapper.xml | 7 +- .../worn/WornTechnicalAppraisalMapper.xml | 30 +- 34 files changed, 2937 insertions(+), 53 deletions(-) create mode 100644 src/main/java/com/shzg/project/worn/controller/WornDeclareBillController.java create mode 100644 src/main/java/com/shzg/project/worn/controller/WornDeclareFileController.java create mode 100644 src/main/java/com/shzg/project/worn/controller/WornDeclareItemController.java create mode 100644 src/main/java/com/shzg/project/worn/domain/WornDeclareBill.java create mode 100644 src/main/java/com/shzg/project/worn/domain/WornDeclareFile.java create mode 100644 src/main/java/com/shzg/project/worn/domain/WornDeclareItem.java create mode 100644 src/main/java/com/shzg/project/worn/mapper/WornDeclareBillMapper.java create mode 100644 src/main/java/com/shzg/project/worn/mapper/WornDeclareFileMapper.java create mode 100644 src/main/java/com/shzg/project/worn/mapper/WornDeclareItemMapper.java create mode 100644 src/main/java/com/shzg/project/worn/service/IWornDeclareBillService.java create mode 100644 src/main/java/com/shzg/project/worn/service/IWornDeclareFileService.java create mode 100644 src/main/java/com/shzg/project/worn/service/IWornDeclareItemService.java create mode 100644 src/main/java/com/shzg/project/worn/service/impl/WornDeclareBillServiceImpl.java create mode 100644 src/main/java/com/shzg/project/worn/service/impl/WornDeclareFileServiceImpl.java create mode 100644 src/main/java/com/shzg/project/worn/service/impl/WornDeclareItemServiceImpl.java create mode 100644 src/main/resources/mybatis/worn/WornDeclareBillMapper.xml create mode 100644 src/main/resources/mybatis/worn/WornDeclareFileMapper.xml create mode 100644 src/main/resources/mybatis/worn/WornDeclareItemMapper.xml diff --git a/src/main/java/com/shzg/project/unique/mapper/WornUniqueCodeMaterialMapper.java b/src/main/java/com/shzg/project/unique/mapper/WornUniqueCodeMaterialMapper.java index fa61eac..eb30ff7 100644 --- a/src/main/java/com/shzg/project/unique/mapper/WornUniqueCodeMaterialMapper.java +++ b/src/main/java/com/shzg/project/unique/mapper/WornUniqueCodeMaterialMapper.java @@ -70,5 +70,7 @@ public interface WornUniqueCodeMaterialMapper * 更新唯一码状态 * */ public int updateDeleteByUniqueCodeId(Long uniqueCodeId); + WornUniqueCodeMaterial selectByUniqueCodeId(Long uniqueCodeId); + int deleteByUniqueCodeId(Long uniqueCodeId); } diff --git a/src/main/java/com/shzg/project/worn/controller/WornDeclareBillController.java b/src/main/java/com/shzg/project/worn/controller/WornDeclareBillController.java new file mode 100644 index 0000000..03bea0c --- /dev/null +++ b/src/main/java/com/shzg/project/worn/controller/WornDeclareBillController.java @@ -0,0 +1,123 @@ +package com.shzg.project.worn.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.shzg.common.utils.SecurityUtils; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.shzg.framework.aspectj.lang.annotation.Log; +import com.shzg.framework.aspectj.lang.enums.BusinessType; +import com.shzg.project.worn.domain.WornDeclareBill; +import com.shzg.project.worn.service.IWornDeclareBillService; +import com.shzg.framework.web.controller.BaseController; +import com.shzg.framework.web.domain.AjaxResult; +import com.shzg.common.utils.poi.ExcelUtil; +import com.shzg.framework.web.page.TableDataInfo; + +/** + * 申报单查看Controller + * + * @author shzg + * @date 2026-04-14 + */ +@RestController +@RequestMapping("/worn/declareBill") +public class WornDeclareBillController extends BaseController +{ + @Autowired + private IWornDeclareBillService wornDeclareBillService; + + /** + * 查询申报单查看列表 + */ + //@PreAuthorize("@ss.hasPermi('worn:declareBill:list')") + @GetMapping("/list") + public TableDataInfo list(WornDeclareBill wornDeclareBill) + { + startPage(); + if (!SecurityUtils.isAdmin()) + { + wornDeclareBill.setProjectId(SecurityUtils.getDeptId()); + } + List list = wornDeclareBillService.selectWornDeclareBillList(wornDeclareBill); + return getDataTable(list); + } + + /** + * 导出申报单查看列表 + */ + @PreAuthorize("@ss.hasPermi('worn:declareBill:export')") + @Log(title = "申报单查看", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, WornDeclareBill wornDeclareBill) + { + List list = wornDeclareBillService.selectWornDeclareBillList(wornDeclareBill); + ExcelUtil util = new ExcelUtil(WornDeclareBill.class); + util.exportExcel(response, list, "申报单查看数据"); + } + + /** + * 获取申报单查看详细信息 + */ + @PreAuthorize("@ss.hasPermi('worn:declareBill:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(wornDeclareBillService.selectWornDeclareBillById(id)); + } + + /** + * 新增申报单查看 + */ + /** + * 新增申报单 + */ + @Log(title = "申报单", businessType = BusinessType.INSERT) + @PostMapping("/add") + public AjaxResult add(@RequestBody WornDeclareBill wornDeclareBill) + { + return toAjax(wornDeclareBillService.insertWornDeclareBill(wornDeclareBill)); + } + + /** + * 修改申报单查看 + */ + // @PreAuthorize("@ss.hasPermi('worn:declareBill:edit')") + @Log(title = "申报单查看", businessType = BusinessType.UPDATE) + @PutMapping("/update") + public AjaxResult edit(@RequestBody WornDeclareBill wornDeclareBill) + { + return toAjax(wornDeclareBillService.updateWornDeclareBill(wornDeclareBill)); + } + + /** + * 删除申报单查看 + */ + @PreAuthorize("@ss.hasPermi('worn:declareBill:remove')") + @Log(title = "申报单查看", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(wornDeclareBillService.deleteWornDeclareBillByIds(ids)); + } + + /** + * 根据申报单号查询申报单详情 + */ + @GetMapping("/detail") + public AjaxResult detail(@RequestParam("billNo") String billNo) + { + return AjaxResult.success(wornDeclareBillService.selectWornDeclareBillDetailByBillNo(billNo)); + } + + /** + * 作废申报单 + */ + @PutMapping("/cancel/{id}") + public AjaxResult cancel(@PathVariable("id") Long id) + { + return toAjax(wornDeclareBillService.cancelWornDeclareBill(id)); + } +} diff --git a/src/main/java/com/shzg/project/worn/controller/WornDeclareFileController.java b/src/main/java/com/shzg/project/worn/controller/WornDeclareFileController.java new file mode 100644 index 0000000..7a95c4b --- /dev/null +++ b/src/main/java/com/shzg/project/worn/controller/WornDeclareFileController.java @@ -0,0 +1,104 @@ +package com.shzg.project.worn.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.shzg.framework.aspectj.lang.annotation.Log; +import com.shzg.framework.aspectj.lang.enums.BusinessType; +import com.shzg.project.worn.domain.WornDeclareFile; +import com.shzg.project.worn.service.IWornDeclareFileService; +import com.shzg.framework.web.controller.BaseController; +import com.shzg.framework.web.domain.AjaxResult; +import com.shzg.common.utils.poi.ExcelUtil; +import com.shzg.framework.web.page.TableDataInfo; + +/** + * 申报单附件Controller + * + * @author shzg + * @date 2026-04-14 + */ +@RestController +@RequestMapping("/worn/declareFile") +public class WornDeclareFileController extends BaseController +{ + @Autowired + private IWornDeclareFileService wornDeclareFileService; + + /** + * 查询申报单附件列表 + */ + @PreAuthorize("@ss.hasPermi('worn:declareFile:list')") + @GetMapping("/list") + public TableDataInfo list(WornDeclareFile wornDeclareFile) + { + startPage(); + List list = wornDeclareFileService.selectWornDeclareFileList(wornDeclareFile); + return getDataTable(list); + } + + /** + * 导出申报单附件列表 + */ + @PreAuthorize("@ss.hasPermi('worn:declareFile:export')") + @Log(title = "申报单附件", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, WornDeclareFile wornDeclareFile) + { + List list = wornDeclareFileService.selectWornDeclareFileList(wornDeclareFile); + ExcelUtil util = new ExcelUtil(WornDeclareFile.class); + util.exportExcel(response, list, "申报单附件数据"); + } + + /** + * 获取申报单附件详细信息 + */ + @PreAuthorize("@ss.hasPermi('worn:declareFile:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(wornDeclareFileService.selectWornDeclareFileById(id)); + } + + /** + * 新增申报单附件 + */ + @PreAuthorize("@ss.hasPermi('worn:declareFile:add')") + @Log(title = "申报单附件", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WornDeclareFile wornDeclareFile) + { + return toAjax(wornDeclareFileService.insertWornDeclareFile(wornDeclareFile)); + } + + /** + * 修改申报单附件 + */ + @PreAuthorize("@ss.hasPermi('worn:declareFile:edit')") + @Log(title = "申报单附件", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WornDeclareFile wornDeclareFile) + { + return toAjax(wornDeclareFileService.updateWornDeclareFile(wornDeclareFile)); + } + + /** + * 删除申报单附件 + */ + @PreAuthorize("@ss.hasPermi('worn:declareFile:remove')") + @Log(title = "申报单附件", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(wornDeclareFileService.deleteWornDeclareFileByIds(ids)); + } +} diff --git a/src/main/java/com/shzg/project/worn/controller/WornDeclareItemController.java b/src/main/java/com/shzg/project/worn/controller/WornDeclareItemController.java new file mode 100644 index 0000000..86592ba --- /dev/null +++ b/src/main/java/com/shzg/project/worn/controller/WornDeclareItemController.java @@ -0,0 +1,104 @@ +package com.shzg.project.worn.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.shzg.framework.aspectj.lang.annotation.Log; +import com.shzg.framework.aspectj.lang.enums.BusinessType; +import com.shzg.project.worn.domain.WornDeclareItem; +import com.shzg.project.worn.service.IWornDeclareItemService; +import com.shzg.framework.web.controller.BaseController; +import com.shzg.framework.web.domain.AjaxResult; +import com.shzg.common.utils.poi.ExcelUtil; +import com.shzg.framework.web.page.TableDataInfo; + +/** + * 申报单物料明细Controller + * + * @author shzg + * @date 2026-04-14 + */ +@RestController +@RequestMapping("/worn/declareItem") +public class WornDeclareItemController extends BaseController +{ + @Autowired + private IWornDeclareItemService wornDeclareItemService; + + /** + * 查询申报单物料明细列表 + */ + @PreAuthorize("@ss.hasPermi('worn:declareItem:list')") + @GetMapping("/list") + public TableDataInfo list(WornDeclareItem wornDeclareItem) + { + startPage(); + List list = wornDeclareItemService.selectWornDeclareItemList(wornDeclareItem); + return getDataTable(list); + } + + /** + * 导出申报单物料明细列表 + */ + @PreAuthorize("@ss.hasPermi('worn:declareItem:export')") + @Log(title = "申报单物料明细", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, WornDeclareItem wornDeclareItem) + { + List list = wornDeclareItemService.selectWornDeclareItemList(wornDeclareItem); + ExcelUtil util = new ExcelUtil(WornDeclareItem.class); + util.exportExcel(response, list, "申报单物料明细数据"); + } + + /** + * 获取申报单物料明细详细信息 + */ + @PreAuthorize("@ss.hasPermi('worn:declareItem:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(wornDeclareItemService.selectWornDeclareItemById(id)); + } + + /** + * 新增申报单物料明细 + */ + @PreAuthorize("@ss.hasPermi('worn:declareItem:add')") + @Log(title = "申报单物料明细", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WornDeclareItem wornDeclareItem) + { + return toAjax(wornDeclareItemService.insertWornDeclareItem(wornDeclareItem)); + } + + /** + * 修改申报单物料明细 + */ + @PreAuthorize("@ss.hasPermi('worn:declareItem:edit')") + @Log(title = "申报单物料明细", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WornDeclareItem wornDeclareItem) + { + return toAjax(wornDeclareItemService.updateWornDeclareItem(wornDeclareItem)); + } + + /** + * 删除申报单物料明细 + */ + @PreAuthorize("@ss.hasPermi('worn:declareItem:remove')") + @Log(title = "申报单物料明细", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(wornDeclareItemService.deleteWornDeclareItemByIds(ids)); + } +} diff --git a/src/main/java/com/shzg/project/worn/controller/WornInboundBillController.java b/src/main/java/com/shzg/project/worn/controller/WornInboundBillController.java index 4f7b5f9..1a284e9 100644 --- a/src/main/java/com/shzg/project/worn/controller/WornInboundBillController.java +++ b/src/main/java/com/shzg/project/worn/controller/WornInboundBillController.java @@ -1,6 +1,7 @@ package com.shzg.project.worn.controller; import java.util.List; +import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import com.shzg.common.utils.SecurityUtils; @@ -127,10 +128,17 @@ public class WornInboundBillController extends BaseController { byte[] pdf = wornInboundBillService.generatePdf(id); + response.reset(); response.setContentType("application/pdf"); + response.setCharacterEncoding("UTF-8"); + response.setContentLength(pdf.length); response.setHeader("Content-Disposition", "inline; filename=inbound.pdf"); + response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0"); - response.getOutputStream().write(pdf); + ServletOutputStream outputStream = response.getOutputStream(); + outputStream.write(pdf); + outputStream.flush(); + outputStream.close(); } } diff --git a/src/main/java/com/shzg/project/worn/controller/WornTechnicalAppraisalController.java b/src/main/java/com/shzg/project/worn/controller/WornTechnicalAppraisalController.java index 5db4507..c30e388 100644 --- a/src/main/java/com/shzg/project/worn/controller/WornTechnicalAppraisalController.java +++ b/src/main/java/com/shzg/project/worn/controller/WornTechnicalAppraisalController.java @@ -94,22 +94,22 @@ public class WornTechnicalAppraisalController extends BaseController } /** - * 删除技术鉴定 + * 删除技术鉴定表 */ @PreAuthorize("@ss.hasPermi('worn:appraisal:remove')") - @Log(title = "技术鉴定", businessType = BusinessType.DELETE) - @DeleteMapping("/delete") - public AjaxResult remove(@PathVariable Long[] ids) + @Log(title = "技术鉴定表", businessType = BusinessType.DELETE) + @DeleteMapping("/{id}") + public AjaxResult remove(@PathVariable("id") Long id) { - return toAjax(wornTechnicalAppraisalService.deleteWornTechnicalAppraisalByIds(ids)); + return toAjax(wornTechnicalAppraisalService.deleteWornTechnicalAppraisalById(id)); } - /** - * 新增技术鉴定表(含附件) - */ @PostMapping("/addWithFiles") public AjaxResult addWithFiles(@RequestBody WornTechnicalAppraisal wornTechnicalAppraisal) { - return toAjax(wornTechnicalAppraisalService.insertWornTechnicalAppraisalWithFiles(wornTechnicalAppraisal)); + WornTechnicalAppraisalSimpleDTO dto = + wornTechnicalAppraisalService.insertWornTechnicalAppraisalWithFiles(wornTechnicalAppraisal); + + return AjaxResult.success(dto); } @GetMapping("/myList") public TableDataInfo myList() diff --git a/src/main/java/com/shzg/project/worn/domain/WornDeclareBill.java b/src/main/java/com/shzg/project/worn/domain/WornDeclareBill.java new file mode 100644 index 0000000..6b5ed3c --- /dev/null +++ b/src/main/java/com/shzg/project/worn/domain/WornDeclareBill.java @@ -0,0 +1,188 @@ +package com.shzg.project.worn.domain; + +import java.util.Date; +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.shzg.framework.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.shzg.framework.aspectj.lang.annotation.Excel; + +/** + * 申报单查看对象 worn_declare_bill + * + * @author shzg + * @date 2026-04-14 + */ +public class WornDeclareBill extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键ID */ + private Long id; + + /** 申报单号 */ + @Excel(name = "申报单号") + private String billNo; + + /** 项目ID(对应sys_dept.dept_id) */ + @Excel(name = "项目ID", readConverterExp = "对=应sys_dept.dept_id") + private Long projectId; + + /** 联系人 */ + @Excel(name = "联系人") + private String contactName; + + /** 联系电话 */ + @Excel(name = "联系电话") + private String contactPhone; + + /** 交付时间 */ + @Excel(name = "交付时间") + private String deliveryTime; // 0 15天1 立即 2其他 + + /** 存放地址 */ + @Excel(name = "存放地址") + private String address; + + /** 状态(0草稿,1已提交,2已转入库,9已作废) */ + @Excel(name = "状态", readConverterExp = "0=草稿,1已提交,2已转入库,9已作废") + private String status; + + /** 是否删除(0正常 1删除) */ + @Excel(name = "是否删除", readConverterExp = "0=正常,1=删除") + private String isDelete; + /** 物料列表 */ + private List itemList; + /** 附件列表 */ + private List fileList; + + public List getFileList() + { + return fileList; + } + + public void setFileList(List fileList) + { + this.fileList = fileList; + } + public List getItemList() + { + return itemList; + } + + public void setItemList(List itemList) + { + this.itemList = itemList; + } + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + + public void setBillNo(String billNo) + { + this.billNo = billNo; + } + + public String getBillNo() + { + return billNo; + } + + public void setProjectId(Long projectId) + { + this.projectId = projectId; + } + + public Long getProjectId() + { + return projectId; + } + + public void setContactName(String contactName) + { + this.contactName = contactName; + } + + public String getContactName() + { + return contactName; + } + + public void setContactPhone(String contactPhone) + { + this.contactPhone = contactPhone; + } + + public String getContactPhone() + { + return contactPhone; + } + + public void setDeliveryTime(String deliveryTime) + { + this.deliveryTime = deliveryTime; + } + + public String getDeliveryTime() + { + return deliveryTime; + } + + public void setAddress(String address) + { + this.address = address; + } + + public String getAddress() + { + return address; + } + + public void setStatus(String status) + { + this.status = status; + } + + public String getStatus() + { + return status; + } + + public void setIsDelete(String isDelete) + { + this.isDelete = isDelete; + } + + public String getIsDelete() + { + return isDelete; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("billNo", getBillNo()) + .append("projectId", getProjectId()) + .append("contactName", getContactName()) + .append("contactPhone", getContactPhone()) + .append("deliveryTime", getDeliveryTime()) + .append("address", getAddress()) + .append("remark", getRemark()) + .append("status", getStatus()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("isDelete", getIsDelete()) + .toString(); + } +} diff --git a/src/main/java/com/shzg/project/worn/domain/WornDeclareFile.java b/src/main/java/com/shzg/project/worn/domain/WornDeclareFile.java new file mode 100644 index 0000000..7a2cc4a --- /dev/null +++ b/src/main/java/com/shzg/project/worn/domain/WornDeclareFile.java @@ -0,0 +1,169 @@ +package com.shzg.project.worn.domain; + +import com.shzg.framework.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.shzg.framework.aspectj.lang.annotation.Excel; + +/** + * 申报单附件对象 worn_declare_file + * + * @author shzg + * @date 2026-04-14 + */ +public class WornDeclareFile extends BaseEntity +{ + private static final long serialVersionUID = 1L; + /** 文件名 */ + private String name; + + /** 文件地址 */ + private String url; + + + /** 主键ID */ + private Long id; + + /** 申报单ID */ + @Excel(name = "申报单ID") + private Long billId; + + /** 申报单号 */ + @Excel(name = "申报单号") + private String billNo; + + /** 文件名 */ + @Excel(name = "文件名") + private String fileName; + + /** 文件地址 */ + @Excel(name = "文件地址") + private String fileUrl; + + /** 文件类型 */ + @Excel(name = "文件类型") + private String fileType; + + /** 排序号 */ + @Excel(name = "排序号") + private Long sortNum; + + /** 是否删除(0正常 1删除) */ + @Excel(name = "是否删除", readConverterExp = "0=正常,1=删除") + private String isDelete; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + + public void setBillId(Long billId) + { + this.billId = billId; + } + + public Long getBillId() + { + return billId; + } + + public void setBillNo(String billNo) + { + this.billNo = billNo; + } + + public String getBillNo() + { + return billNo; + } + + public void setFileName(String fileName) + { + this.fileName = fileName; + } + + public String getFileName() + { + return fileName; + } + + public void setFileUrl(String fileUrl) + { + this.fileUrl = fileUrl; + } + + public String getFileUrl() + { + return fileUrl; + } + + public void setFileType(String fileType) + { + this.fileType = fileType; + } + + public String getFileType() + { + return fileType; + } + + public void setSortNum(Long sortNum) + { + this.sortNum = sortNum; + } + + public Long getSortNum() + { + return sortNum; + } + + public void setIsDelete(String isDelete) + { + this.isDelete = isDelete; + } + + public String getIsDelete() + { + return isDelete; + } + public String getName() + { + return name; + } + + public void setName(String name) + { + this.name = name; + } + + public String getUrl() + { + return url; + } + + public void setUrl(String url) + { + this.url = url; + } + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("billId", getBillId()) + .append("billNo", getBillNo()) + .append("fileName", getFileName()) + .append("fileUrl", getFileUrl()) + .append("fileType", getFileType()) + .append("sortNum", getSortNum()) + .append("remark", getRemark()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("isDelete", getIsDelete()) + .toString(); + } +} diff --git a/src/main/java/com/shzg/project/worn/domain/WornDeclareItem.java b/src/main/java/com/shzg/project/worn/domain/WornDeclareItem.java new file mode 100644 index 0000000..1e77dfd --- /dev/null +++ b/src/main/java/com/shzg/project/worn/domain/WornDeclareItem.java @@ -0,0 +1,139 @@ +package com.shzg.project.worn.domain; + +import java.math.BigDecimal; +import java.util.Date; + +public class WornDeclareItem +{ + /** ===== 主表(bill)===== */ + private Long billId; + private String billNo; + private Long projectId; + private String contactName; + private String contactPhone; + private String deliveryTime; + private String address; + private String billRemark; + private String billStatus; + private String updateBy; + private Date updateTime; + + /** ===== 明细(item)===== */ + private Long id; + private Long materialId; + private BigDecimal quantity; + private Integer uniqueCode; + private String remark; + private String isDelete; + private String createBy; + private Date createTime; + private String status; + + /** ===== 物料(material)===== */ + private String materialName; + private String materialCode; + private String materialShortName; + private String specification; + private String model; + private BigDecimal weight; + + /** ===== 单位 ===== */ + private Long unitId; + private String unitName; + + /** ===== 类型 ===== */ + private String typeName; + private String typeParentNames; + + // ================= getter / setter ================= + + public Long getBillId() { return billId; } + public void setBillId(Long billId) { this.billId = billId; } + + public String getBillNo() { return billNo; } + public void setBillNo(String billNo) { this.billNo = billNo; } + + public Long getProjectId() { return projectId; } + public void setProjectId(Long projectId) { this.projectId = projectId; } + + public String getContactName() { return contactName; } + public void setContactName(String contactName) { this.contactName = contactName; } + + public String getContactPhone() { return contactPhone; } + public void setContactPhone(String contactPhone) { this.contactPhone = contactPhone; } + + public String getDeliveryTime() { return deliveryTime; } + public void setDeliveryTime(String deliveryTime) { this.deliveryTime = deliveryTime; } + + public String getAddress() { return address; } + public void setAddress(String address) { this.address = address; } + + public String getBillRemark() { return billRemark; } + public void setBillRemark(String billRemark) { this.billRemark = billRemark; } + + public String getBillStatus() { return billStatus; } + public void setBillStatus(String billStatus) { this.billStatus = billStatus; } + + public String getUpdateBy() { return updateBy; } + public void setUpdateBy(String updateBy) { this.updateBy = updateBy; } + + public Date getUpdateTime() { return updateTime; } + public void setUpdateTime(Date updateTime) { this.updateTime = updateTime; } + + public Long getId() { return id; } + public void setId(Long id) { this.id = id; } + + public Long getMaterialId() { return materialId; } + public void setMaterialId(Long materialId) { this.materialId = materialId; } + + public BigDecimal getQuantity() { return quantity; } + public void setQuantity(BigDecimal quantity) { this.quantity = quantity; } + + public Integer getUniqueCode() { return uniqueCode; } + public void setUniqueCode(Integer uniqueCode) { this.uniqueCode = uniqueCode; } + + public String getRemark() { return remark; } + public void setRemark(String remark) { this.remark = remark; } + + public String getIsDelete() { return isDelete; } + public void setIsDelete(String isDelete) { this.isDelete = isDelete; } + + public String getCreateBy() { return createBy; } + public void setCreateBy(String createBy) { this.createBy = createBy; } + + public Date getCreateTime() { return createTime; } + public void setCreateTime(Date createTime) { this.createTime = createTime; } + + public String getStatus() { return status; } + public void setStatus(String status) { this.status = status; } + + public String getMaterialName() { return materialName; } + public void setMaterialName(String materialName) { this.materialName = materialName; } + + public String getMaterialCode() { return materialCode; } + public void setMaterialCode(String materialCode) { this.materialCode = materialCode; } + + public String getMaterialShortName() { return materialShortName; } + public void setMaterialShortName(String materialShortName) { this.materialShortName = materialShortName; } + + public String getSpecification() { return specification; } + public void setSpecification(String specification) { this.specification = specification; } + + public String getModel() { return model; } + public void setModel(String model) { this.model = model; } + + public BigDecimal getWeight() { return weight; } + public void setWeight(BigDecimal weight) { this.weight = weight; } + + public Long getUnitId() { return unitId; } + public void setUnitId(Long unitId) { this.unitId = unitId; } + + public String getUnitName() { return unitName; } + public void setUnitName(String unitName) { this.unitName = unitName; } + + public String getTypeName() { return typeName; } + public void setTypeName(String typeName) { this.typeName = typeName; } + + public String getTypeParentNames() { return typeParentNames; } + public void setTypeParentNames(String typeParentNames) { this.typeParentNames = typeParentNames; } +} \ No newline at end of file diff --git a/src/main/java/com/shzg/project/worn/domain/WornTechnicalAppraisal.java b/src/main/java/com/shzg/project/worn/domain/WornTechnicalAppraisal.java index 31d746d..12397bc 100644 --- a/src/main/java/com/shzg/project/worn/domain/WornTechnicalAppraisal.java +++ b/src/main/java/com/shzg/project/worn/domain/WornTechnicalAppraisal.java @@ -1,6 +1,7 @@ package com.shzg.project.worn.domain; import com.shzg.framework.web.domain.BaseEntity; +import com.shzg.project.worn.domain.dto.AppraisalFileDTO; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.shzg.framework.aspectj.lang.annotation.Excel; @@ -56,7 +57,7 @@ public class WornTechnicalAppraisal extends BaseEntity @Excel(name = "是否删除", readConverterExp = "0=正常,1=删除") private String isDelete; /** 附件列表 */ - private List fileList; + private List fileList; public void setId(Long id) { this.id = id; @@ -156,12 +157,12 @@ public class WornTechnicalAppraisal extends BaseEntity { return isDelete; } - public List getFileList() + public List getFileList() { return fileList; } - public void setFileList(List fileList) + public void setFileList(List fileList) { this.fileList = fileList; } diff --git a/src/main/java/com/shzg/project/worn/domain/dto/WornOutboundUpdateDTO.java b/src/main/java/com/shzg/project/worn/domain/dto/WornOutboundUpdateDTO.java index a0c896f..91f54b6 100644 --- a/src/main/java/com/shzg/project/worn/domain/dto/WornOutboundUpdateDTO.java +++ b/src/main/java/com/shzg/project/worn/domain/dto/WornOutboundUpdateDTO.java @@ -21,4 +21,20 @@ public class WornOutboundUpdateDTO { private Date createTime; private List itemList; + /** 技术鉴定表ID */ + private Long appraisalId; + + /** 技术鉴定编号 */ + private String appraisalNo; + + /** 技术鉴定说明 */ + private String appraisalDesc; + + /** 技术鉴定备注 */ + private String appraisalRemark; + /** 技术鉴定创建时间 */ + private Date appraisalTime; + + /** 技术鉴定表附件 */ + private List appraisalFileList; } diff --git a/src/main/java/com/shzg/project/worn/mapper/WornDeclareBillMapper.java b/src/main/java/com/shzg/project/worn/mapper/WornDeclareBillMapper.java new file mode 100644 index 0000000..27d3494 --- /dev/null +++ b/src/main/java/com/shzg/project/worn/mapper/WornDeclareBillMapper.java @@ -0,0 +1,72 @@ +package com.shzg.project.worn.mapper; + +import java.util.List; +import com.shzg.project.worn.domain.WornDeclareBill; + +/** + * 申报单查看Mapper接口 + * + * @author shzg + * @date 2026-04-14 + */ +public interface WornDeclareBillMapper +{ + /** + * 查询申报单查看 + * + * @param id 申报单查看主键 + * @return 申报单查看 + */ + public WornDeclareBill selectWornDeclareBillById(Long id); + + /** + * 查询申报单查看列表 + * + * @param wornDeclareBill 申报单查看 + * @return 申报单查看集合 + */ + public List selectWornDeclareBillList(WornDeclareBill wornDeclareBill); + + /** + * 新增申报单查看 + * + * @param wornDeclareBill 申报单查看 + * @return 结果 + */ + public int insertWornDeclareBill(WornDeclareBill wornDeclareBill); + + /** + * 修改申报单查看 + * + * @param wornDeclareBill 申报单查看 + * @return 结果 + */ + public int updateWornDeclareBill(WornDeclareBill wornDeclareBill); + + /** + * 删除申报单查看 + * + * @param id 申报单查看主键 + * @return 结果 + */ + public int deleteWornDeclareBillById(Long id); + + /** + * 批量删除申报单查看 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteWornDeclareBillByIds(Long[] ids); + /** + * 根据申报单号查询申报单主表 + * + * @param billNo 申报单号 + * @return 申报单主表 + */ + WornDeclareBill selectWornDeclareBillByBillNo(String billNo); + + public int cancelWornDeclareBill(WornDeclareBill wornDeclareBill); + + +} diff --git a/src/main/java/com/shzg/project/worn/mapper/WornDeclareFileMapper.java b/src/main/java/com/shzg/project/worn/mapper/WornDeclareFileMapper.java new file mode 100644 index 0000000..4d4fc06 --- /dev/null +++ b/src/main/java/com/shzg/project/worn/mapper/WornDeclareFileMapper.java @@ -0,0 +1,70 @@ +package com.shzg.project.worn.mapper; + +import java.util.List; +import com.shzg.project.worn.domain.WornDeclareFile; + +/** + * 申报单附件Mapper接口 + * + * @author shzg + * @date 2026-04-14 + */ +public interface WornDeclareFileMapper +{ + /** + * 查询申报单附件 + * + * @param id 申报单附件主键 + * @return 申报单附件 + */ + public WornDeclareFile selectWornDeclareFileById(Long id); + + /** + * 查询申报单附件列表 + * + * @param wornDeclareFile 申报单附件 + * @return 申报单附件集合 + */ + public List selectWornDeclareFileList(WornDeclareFile wornDeclareFile); + + /** + * 新增申报单附件 + * + * @param wornDeclareFile 申报单附件 + * @return 结果 + */ + public int insertWornDeclareFile(WornDeclareFile wornDeclareFile); + + /** + * 修改申报单附件 + * + * @param wornDeclareFile 申报单附件 + * @return 结果 + */ + public int updateWornDeclareFile(WornDeclareFile wornDeclareFile); + + /** + * 删除申报单附件 + * + * @param id 申报单附件主键 + * @return 结果 + */ + public int deleteWornDeclareFileById(Long id); + + /** + * 批量删除申报单附件 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteWornDeclareFileByIds(Long[] ids); + /** + * 根据申报单ID查询附件列表 + * + * @param billId 主表ID + * @return 附件列表 + */ + List selectWornDeclareFileByBillId(Long billId); + + int deleteWornDeclareFileByBillId(Long billId); +} diff --git a/src/main/java/com/shzg/project/worn/mapper/WornDeclareItemMapper.java b/src/main/java/com/shzg/project/worn/mapper/WornDeclareItemMapper.java new file mode 100644 index 0000000..86f462d --- /dev/null +++ b/src/main/java/com/shzg/project/worn/mapper/WornDeclareItemMapper.java @@ -0,0 +1,85 @@ +package com.shzg.project.worn.mapper; + +import java.util.Date; +import java.util.List; +import com.shzg.project.worn.domain.WornDeclareItem; +import io.lettuce.core.dynamic.annotation.Param; + +/** + * 申报单物料明细Mapper接口 + * + * @author shzg + * @date 2026-04-14 + */ +public interface WornDeclareItemMapper +{ + /** + * 查询申报单物料明细 + * + * @param id 申报单物料明细主键 + * @return 申报单物料明细 + */ + public WornDeclareItem selectWornDeclareItemById(Long id); + + /** + * 查询申报单物料明细列表 + * + * @param wornDeclareItem 申报单物料明细 + * @return 申报单物料明细集合 + */ + public List selectWornDeclareItemList(WornDeclareItem wornDeclareItem); + + /** + * 新增申报单物料明细 + * + * @param wornDeclareItem 申报单物料明细 + * @return 结果 + */ + public int insertWornDeclareItem(WornDeclareItem wornDeclareItem); + + /** + * 修改申报单物料明细 + * + * @param wornDeclareItem 申报单物料明细 + * @return 结果 + */ + public int updateWornDeclareItem(WornDeclareItem wornDeclareItem); + + /** + * 删除申报单物料明细 + * + * @param id 申报单物料明细主键 + * @return 结果 + */ + public int deleteWornDeclareItemById(Long id); + + /** + * 批量删除申报单物料明细 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteWornDeclareItemByIds(Long[] ids); + /** + * 根据申报单号查询物料明细 + * + * @param billNo 申报单号 + * @return 明细列表 + */ + List selectWornDeclareItemDetailByBillNo(String billNo); + + int deleteWornDeclareItemByBillId(@Param("billId") Long billId, + @Param("updateBy") String updateBy, + @Param("updateTime") Date updateTime); + /** + * 作废申报单明细 + * + * @param billId 申报单ID + * @param updateBy 更新人 + * @param updateTime 更新时间 + * @return 结果 + */ + int cancelWornDeclareItemByBillId(@Param("billId") Long billId, + @Param("updateBy") String updateBy, + @Param("updateTime") Date updateTime); +} diff --git a/src/main/java/com/shzg/project/worn/mapper/WornTechnicalAppraisalFileMapper.java b/src/main/java/com/shzg/project/worn/mapper/WornTechnicalAppraisalFileMapper.java index 6c9c1db..f4b2e9e 100644 --- a/src/main/java/com/shzg/project/worn/mapper/WornTechnicalAppraisalFileMapper.java +++ b/src/main/java/com/shzg/project/worn/mapper/WornTechnicalAppraisalFileMapper.java @@ -50,6 +50,7 @@ public interface WornTechnicalAppraisalFileMapper * @return 结果 */ public int deleteWornTechnicalAppraisalFileById(Long id); + int removeWornTechnicalAppraisalFileById(WornTechnicalAppraisalFile wornTechnicalAppraisalFile); /** * 批量删除技术鉴定附件 diff --git a/src/main/java/com/shzg/project/worn/mapper/WornTechnicalAppraisalMapper.java b/src/main/java/com/shzg/project/worn/mapper/WornTechnicalAppraisalMapper.java index 2a7165c..e8736ff 100644 --- a/src/main/java/com/shzg/project/worn/mapper/WornTechnicalAppraisalMapper.java +++ b/src/main/java/com/shzg/project/worn/mapper/WornTechnicalAppraisalMapper.java @@ -42,7 +42,7 @@ public interface WornTechnicalAppraisalMapper * @return 结果 */ public int updateWornTechnicalAppraisal(WornTechnicalAppraisal wornTechnicalAppraisal); - + int removeWornTechnicalAppraisalById(WornTechnicalAppraisal wornTechnicalAppraisal); /** * 删除技术鉴定 * diff --git a/src/main/java/com/shzg/project/worn/service/IWornDeclareBillService.java b/src/main/java/com/shzg/project/worn/service/IWornDeclareBillService.java new file mode 100644 index 0000000..febe329 --- /dev/null +++ b/src/main/java/com/shzg/project/worn/service/IWornDeclareBillService.java @@ -0,0 +1,75 @@ +package com.shzg.project.worn.service; + +import java.util.List; +import com.shzg.project.worn.domain.WornDeclareBill; + +/** + * 申报单查看Service接口 + * + * @author shzg + * @date 2026-04-14 + */ +public interface IWornDeclareBillService +{ + /** + * 查询申报单查看 + * + * @param id 申报单查看主键 + * @return 申报单查看 + */ + public WornDeclareBill selectWornDeclareBillById(Long id); + + /** + * 查询申报单查看列表 + * + * @param wornDeclareBill 申报单查看 + * @return 申报单查看集合 + */ + public List selectWornDeclareBillList(WornDeclareBill wornDeclareBill); + + /** + * 新增申报单查看 + * + * @param wornDeclareBill 申报单查看 + * @return 结果 + */ + public int insertWornDeclareBill(WornDeclareBill wornDeclareBill); + + /** + * 修改申报单查看 + * + * @param wornDeclareBill 申报单查看 + * @return 结果 + */ + public int updateWornDeclareBill(WornDeclareBill wornDeclareBill); + + /** + * 批量删除申报单查看 + * + * @param ids 需要删除的申报单查看主键集合 + * @return 结果 + */ + public int deleteWornDeclareBillByIds(Long[] ids); + + /** + * 删除申报单查看信息 + * + * @param id 申报单查看主键 + * @return 结果 + */ + public int deleteWornDeclareBillById(Long id); + /** + * 根据申报单号查询申报单详情 + * + * @param billNo 申报单号 + * @return 申报单详情 + */ + WornDeclareBill selectWornDeclareBillDetailByBillNo(String billNo); + /** + * 作废申报单 + * + * @param id 申报单ID + * @return 结果 + */ + int cancelWornDeclareBill(Long id); +} diff --git a/src/main/java/com/shzg/project/worn/service/IWornDeclareFileService.java b/src/main/java/com/shzg/project/worn/service/IWornDeclareFileService.java new file mode 100644 index 0000000..5d132f9 --- /dev/null +++ b/src/main/java/com/shzg/project/worn/service/IWornDeclareFileService.java @@ -0,0 +1,61 @@ +package com.shzg.project.worn.service; + +import java.util.List; +import com.shzg.project.worn.domain.WornDeclareFile; + +/** + * 申报单附件Service接口 + * + * @author shzg + * @date 2026-04-14 + */ +public interface IWornDeclareFileService +{ + /** + * 查询申报单附件 + * + * @param id 申报单附件主键 + * @return 申报单附件 + */ + public WornDeclareFile selectWornDeclareFileById(Long id); + + /** + * 查询申报单附件列表 + * + * @param wornDeclareFile 申报单附件 + * @return 申报单附件集合 + */ + public List selectWornDeclareFileList(WornDeclareFile wornDeclareFile); + + /** + * 新增申报单附件 + * + * @param wornDeclareFile 申报单附件 + * @return 结果 + */ + public int insertWornDeclareFile(WornDeclareFile wornDeclareFile); + + /** + * 修改申报单附件 + * + * @param wornDeclareFile 申报单附件 + * @return 结果 + */ + public int updateWornDeclareFile(WornDeclareFile wornDeclareFile); + + /** + * 批量删除申报单附件 + * + * @param ids 需要删除的申报单附件主键集合 + * @return 结果 + */ + public int deleteWornDeclareFileByIds(Long[] ids); + + /** + * 删除申报单附件信息 + * + * @param id 申报单附件主键 + * @return 结果 + */ + public int deleteWornDeclareFileById(Long id); +} diff --git a/src/main/java/com/shzg/project/worn/service/IWornDeclareItemService.java b/src/main/java/com/shzg/project/worn/service/IWornDeclareItemService.java new file mode 100644 index 0000000..a11ef4f --- /dev/null +++ b/src/main/java/com/shzg/project/worn/service/IWornDeclareItemService.java @@ -0,0 +1,61 @@ +package com.shzg.project.worn.service; + +import java.util.List; +import com.shzg.project.worn.domain.WornDeclareItem; + +/** + * 申报单物料明细Service接口 + * + * @author shzg + * @date 2026-04-14 + */ +public interface IWornDeclareItemService +{ + /** + * 查询申报单物料明细 + * + * @param id 申报单物料明细主键 + * @return 申报单物料明细 + */ + public WornDeclareItem selectWornDeclareItemById(Long id); + + /** + * 查询申报单物料明细列表 + * + * @param wornDeclareItem 申报单物料明细 + * @return 申报单物料明细集合 + */ + public List selectWornDeclareItemList(WornDeclareItem wornDeclareItem); + + /** + * 新增申报单物料明细 + * + * @param wornDeclareItem 申报单物料明细 + * @return 结果 + */ + public int insertWornDeclareItem(WornDeclareItem wornDeclareItem); + + /** + * 修改申报单物料明细 + * + * @param wornDeclareItem 申报单物料明细 + * @return 结果 + */ + public int updateWornDeclareItem(WornDeclareItem wornDeclareItem); + + /** + * 批量删除申报单物料明细 + * + * @param ids 需要删除的申报单物料明细主键集合 + * @return 结果 + */ + public int deleteWornDeclareItemByIds(Long[] ids); + + /** + * 删除申报单物料明细信息 + * + * @param id 申报单物料明细主键 + * @return 结果 + */ + public int deleteWornDeclareItemById(Long id); +} diff --git a/src/main/java/com/shzg/project/worn/service/IWornInboundBillService.java b/src/main/java/com/shzg/project/worn/service/IWornInboundBillService.java index 2a1228e..2cc473c 100644 --- a/src/main/java/com/shzg/project/worn/service/IWornInboundBillService.java +++ b/src/main/java/com/shzg/project/worn/service/IWornInboundBillService.java @@ -4,6 +4,8 @@ import java.util.List; import com.shzg.project.worn.domain.WornInboundBill; import com.shzg.project.worn.domain.dto.WornInboundPartialFinishDTO; +import javax.servlet.http.HttpServletRequest; + /** * 入库库存Service接口 * diff --git a/src/main/java/com/shzg/project/worn/service/IWornTechnicalAppraisalService.java b/src/main/java/com/shzg/project/worn/service/IWornTechnicalAppraisalService.java index e363e7b..7cbc230 100644 --- a/src/main/java/com/shzg/project/worn/service/IWornTechnicalAppraisalService.java +++ b/src/main/java/com/shzg/project/worn/service/IWornTechnicalAppraisalService.java @@ -67,7 +67,7 @@ public interface IWornTechnicalAppraisalService * @param wornTechnicalAppraisal 技术鉴定表 * @return 结果 */ - int insertWornTechnicalAppraisalWithFiles(WornTechnicalAppraisal wornTechnicalAppraisal); + WornTechnicalAppraisalSimpleDTO insertWornTechnicalAppraisalWithFiles(WornTechnicalAppraisal wornTechnicalAppraisal); /** * 查询我上传的技术鉴定表列表 * diff --git a/src/main/java/com/shzg/project/worn/service/impl/WornDeclareBillServiceImpl.java b/src/main/java/com/shzg/project/worn/service/impl/WornDeclareBillServiceImpl.java new file mode 100644 index 0000000..39eb270 --- /dev/null +++ b/src/main/java/com/shzg/project/worn/service/impl/WornDeclareBillServiceImpl.java @@ -0,0 +1,669 @@ +package com.shzg.project.worn.service.impl; + +import java.util.Date; +import java.util.List; +import com.shzg.common.utils.DateUtils; +import com.shzg.common.utils.SecurityUtils; +import com.shzg.common.utils.StringUtils; +import com.shzg.project.unique.domain.WornUniqueCode; +import com.shzg.project.unique.domain.WornUniqueCodeEvent; +import com.shzg.project.unique.domain.WornUniqueCodeMaterial; +import com.shzg.project.unique.mapper.WornUniqueCodeEventMapper; +import com.shzg.project.unique.mapper.WornUniqueCodeMapper; +import com.shzg.project.unique.mapper.WornUniqueCodeMaterialMapper; +import com.shzg.project.worn.domain.WornDeclareFile; +import com.shzg.project.worn.domain.WornDeclareItem; +import com.shzg.project.worn.mapper.WornDeclareFileMapper; +import com.shzg.project.worn.mapper.WornDeclareItemMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.shzg.project.worn.mapper.WornDeclareBillMapper; +import com.shzg.project.worn.domain.WornDeclareBill; +import com.shzg.project.worn.service.IWornDeclareBillService; +import org.springframework.transaction.annotation.Transactional; + +/** + * 申报单查看Service业务层处理 + * + * @author shzg + * @date 2026-04-14 + */ +@Service +public class WornDeclareBillServiceImpl implements IWornDeclareBillService +{ + @Autowired + private WornDeclareBillMapper wornDeclareBillMapper; + + @Autowired + private WornDeclareItemMapper wornDeclareItemMapper; + + @Autowired + private WornDeclareFileMapper wornDeclareFileMapper; + @Autowired + private WornUniqueCodeMapper wornUniqueCodeMapper; + @Autowired + private WornUniqueCodeMaterialMapper wornUniqueCodeMaterialMapper; + @Autowired + private WornUniqueCodeEventMapper eventMapper; + /** + * 查询申报单查看 + * + * @param id 申报单查看主键 + * @return 申报单查看 + */ + @Override + public WornDeclareBill selectWornDeclareBillById(Long id) + { + return wornDeclareBillMapper.selectWornDeclareBillById(id); + } + + /** + * 查询申报单查看列表 + * + * @param wornDeclareBill 申报单查看 + * @return 申报单查看 + */ + @Override + public List selectWornDeclareBillList(WornDeclareBill wornDeclareBill) + { + return wornDeclareBillMapper.selectWornDeclareBillList(wornDeclareBill); + } + + /** + * 新增申报单查看 + * + * @param wornDeclareBill 申报单查看 + * @return 结果 + */ + /** + * 新增申报单 + * + * @param wornDeclareBill 申报单 + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int insertWornDeclareBill(WornDeclareBill wornDeclareBill) + { + /* ================== 1. 参数校验 ================== */ + if (wornDeclareBill == null) + { + throw new RuntimeException("申报单参数不能为空"); + } + if (StringUtils.isEmpty(wornDeclareBill.getContactName())) + { + throw new RuntimeException("联系人不能为空"); + } + if (StringUtils.isEmpty(wornDeclareBill.getContactPhone())) + { + throw new RuntimeException("联系电话不能为空"); + } + if (StringUtils.isEmpty(wornDeclareBill.getDeliveryTime())) + { + throw new RuntimeException("交付时间不能为空"); + } + if (StringUtils.isEmpty(wornDeclareBill.getAddress())) + { + throw new RuntimeException("存放地址不能为空"); + } + if (wornDeclareBill.getItemList() == null || wornDeclareBill.getItemList().isEmpty()) + { + throw new RuntimeException("申报单明细不能为空"); + } + + /* ================== 2. 当前用户 ================== */ + Long userId = SecurityUtils.getLoginUser().getUser().getUserId(); + Long deptId = SecurityUtils.getLoginUser().getUser().getDeptId(); + Date now = DateUtils.getNowDate(); + + wornDeclareBill.setProjectId(deptId); + + /* ================== 3. 主表赋值 ================== */ + wornDeclareBill.setCreateTime(now); + wornDeclareBill.setCreateBy(String.valueOf(userId)); + wornDeclareBill.setStatus("1"); // 1=已提交 + wornDeclareBill.setIsDelete("0"); + + if (StringUtils.isEmpty(wornDeclareBill.getBillNo())){ + wornDeclareBill.setBillNo("DR" + System.currentTimeMillis()); + } + + /* ================== 4. 插入主表 ================== */ + int rows = wornDeclareBillMapper.insertWornDeclareBill(wornDeclareBill); + if (rows <= 0){ + throw new RuntimeException("申报单新增失败"); + } + + Long billId = wornDeclareBill.getId(); + String billNo = wornDeclareBill.getBillNo(); + if (billId == null){ + throw new RuntimeException("申报单新增失败,ID未回填"); + } + + /* ================== 5. 插入明细 ================== */ + List itemList = wornDeclareBill.getItemList(); + for (WornDeclareItem item : itemList) + { + if (item == null) + { + continue; + } + + item.setBillId(billId); + item.setBillNo(billNo); + item.setCreateTime(now); + item.setCreateBy(String.valueOf(userId)); + item.setStatus("1"); // 1正常 + item.setIsDelete("0"); + + int itemRows = wornDeclareItemMapper.insertWornDeclareItem(item); + if (itemRows <= 0) + { + throw new RuntimeException("申报单明细新增失败"); + } + } + + /* ================== 7. 插入附件 ================== */ + List fileList = wornDeclareBill.getFileList(); + if (fileList != null && !fileList.isEmpty()){ + Long sortNum = 1L; + for (WornDeclareFile file : fileList){ + if (file == null || StringUtils.isEmpty(file.getUrl())){ + continue; + } + + file.setBillId(billId); + file.setBillNo(billNo); + file.setSortNum(sortNum++); + file.setCreateBy(String.valueOf(userId)); + file.setCreateTime(now); + file.setIsDelete("0"); + file.setFileUrl(file.getUrl()); + file.setFileName(file.getFileName()); + String fileType = ""; + + if (StringUtils.isNotEmpty(file.getName()) && file.getName().contains(".")) { + fileType = file.getName().substring(file.getName().lastIndexOf(".") + 1).toLowerCase(); + } + file.setFileType(fileType); + int fileRows = wornDeclareFileMapper.insertWornDeclareFile(file); + if (fileRows <= 0) + { + throw new RuntimeException("申报单附件新增失败:" + file.getFileName()); + } + } + } + + return 1; + } + @Override + public WornDeclareBill selectWornDeclareBillDetailByBillNo(String billNo) + { + if (StringUtils.isEmpty(billNo)) + { + throw new RuntimeException("申报单号不能为空"); + } + + // 1. 查主表 + WornDeclareBill bill = wornDeclareBillMapper.selectWornDeclareBillByBillNo(billNo); + if (bill == null) + { + throw new RuntimeException("申报单不存在"); + } + + // 2. 查明细 + List itemList = wornDeclareItemMapper.selectWornDeclareItemDetailByBillNo(billNo); + bill.setItemList(itemList); + + // 3. 查附件 + List fileList = wornDeclareFileMapper.selectWornDeclareFileByBillId(bill.getId()); + bill.setFileList(fileList); + + return bill; + } + /** + * 修改申报单查看 + * + * @param wornDeclareBill 申报单查看 + * @return 结果 + */ + /** + * 修改申报单 + * + * @param wornDeclareBill 申报单 + * @return 结果 + */ + /** + * 修改申报单 + * + * @param dto 申报单 + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int updateWornDeclareBill(WornDeclareBill dto){ + /* ================== 1. 参数校验 ================== */ + if (dto == null) + { + throw new RuntimeException("申报单参数不能为空"); + } + if (dto.getId() == null) + { + throw new RuntimeException("申报单ID不能为空"); + } + if (StringUtils.isEmpty(dto.getBillNo())) + { + throw new RuntimeException("申报单号不能为空"); + } + if (StringUtils.isEmpty(dto.getContactName())) + { + throw new RuntimeException("联系人不能为空"); + } + if (StringUtils.isEmpty(dto.getContactPhone())) + { + throw new RuntimeException("联系电话不能为空"); + } + if (StringUtils.isEmpty(dto.getDeliveryTime())) + { + throw new RuntimeException("交付时间不能为空"); + } + if (StringUtils.isEmpty(dto.getAddress())) + { + throw new RuntimeException("存放地址不能为空"); + } + + /* ================== 2. 当前用户 ================== */ + Long userId = SecurityUtils.getLoginUser().getUser().getUserId(); + Long deptId = SecurityUtils.getLoginUser().getUser().getDeptId(); + Date now = DateUtils.getNowDate(); + + /* ================== 3. 查询原单 ================== */ + WornDeclareBill billUp = wornDeclareBillMapper.selectWornDeclareBillById(dto.getId()); + if (billUp == null) + { + throw new RuntimeException("申报单不存在"); + } + + /* ================== 4. 更新主表 ================== */ + billUp.setProjectId(deptId); + billUp.setContactName(dto.getContactName()); + billUp.setContactPhone(dto.getContactPhone()); + billUp.setDeliveryTime(dto.getDeliveryTime()); + billUp.setAddress(dto.getAddress()); + billUp.setRemark(dto.getRemark()); + billUp.setUpdateBy(String.valueOf(userId)); + billUp.setUpdateTime(now); + + int rows = wornDeclareBillMapper.updateWornDeclareBill(billUp); + if (rows <= 0) + { + throw new RuntimeException("申报单修改失败"); + } + + /* ================== 5. 更新 / 新增 / 删除明细 ================== */ + if (dto.getItemList() != null && !dto.getItemList().isEmpty()){ + for (WornDeclareItem itemDTO : dto.getItemList()){ + if (itemDTO == null){ + continue; + } + + // ===== 删除 ===== + if ("1".equals(itemDTO.getIsDelete())){ + if (itemDTO.getId() != null){ + WornDeclareItem oldItem = wornDeclareItemMapper.selectWornDeclareItemById(itemDTO.getId()); + if (oldItem != null) + { + oldItem.setIsDelete("1"); + oldItem.setUpdateBy(String.valueOf(userId)); + oldItem.setUpdateTime(now); + + int deleteRows = wornDeclareItemMapper.updateWornDeclareItem(oldItem); + if (deleteRows <= 0) + { + throw new RuntimeException("申报单明细删除失败"); + } + +// // 删除时,如果有唯一码,再回滚 +// if (oldItem.getUniqueCode() != null){ +// rollbackDeclareUniqueCode(userId, oldItem.getUniqueCode().intValue(), now); +// } + } + } + continue; + } + + // ===== 新增 ===== + if (itemDTO.getId() == null){ + WornDeclareItem newItem = new WornDeclareItem(); + newItem.setBillId(billUp.getId()); + newItem.setBillNo(billUp.getBillNo()); + + newItem.setMaterialId(itemDTO.getMaterialId()); + newItem.setMaterialName(itemDTO.getMaterialName()); + newItem.setMaterialCode(itemDTO.getMaterialCode()); + newItem.setMaterialShortName(itemDTO.getMaterialShortName()); + newItem.setSpecification(itemDTO.getSpecification()); + newItem.setModel(itemDTO.getModel()); + newItem.setTypeName(itemDTO.getTypeName()); + newItem.setTypeParentNames(itemDTO.getTypeParentNames()); + newItem.setUniqueCode(itemDTO.getUniqueCode()); + newItem.setQuantity(itemDTO.getQuantity()); + newItem.setUnitId(itemDTO.getUnitId()); + newItem.setUnitName(itemDTO.getUnitName()); + newItem.setRemark(itemDTO.getRemark()); + + newItem.setStatus("1"); + newItem.setIsDelete("0"); + newItem.setCreateBy(String.valueOf(userId)); + newItem.setCreateTime(now); + + int itemRows = wornDeclareItemMapper.insertWornDeclareItem(newItem); + if (itemRows <= 0) + { + throw new RuntimeException("申报单明细新增失败"); + } + }else{ + // ===== 修改 ===== + WornDeclareItem oldItem = wornDeclareItemMapper.selectWornDeclareItemById(itemDTO.getId()); + if (oldItem == null) + { + throw new RuntimeException("申报单明细不存在,ID:" + itemDTO.getId()); + } + Integer newCode = 0; + if (itemDTO.getUniqueCode() !=null){ + newCode = itemDTO.getUniqueCode().intValue();; + + } + oldItem.setMaterialId(itemDTO.getMaterialId()); + oldItem.setMaterialName(itemDTO.getMaterialName()); + oldItem.setMaterialCode(itemDTO.getMaterialCode()); + oldItem.setMaterialShortName(itemDTO.getMaterialShortName()); + oldItem.setSpecification(itemDTO.getSpecification()); + oldItem.setModel(itemDTO.getModel()); + oldItem.setTypeName(itemDTO.getTypeName()); + oldItem.setTypeParentNames(itemDTO.getTypeParentNames()); + oldItem.setUniqueCode(newCode); + oldItem.setQuantity(itemDTO.getQuantity()); + oldItem.setUnitId(itemDTO.getUnitId()); + oldItem.setUnitName(itemDTO.getUnitName()); + oldItem.setRemark(itemDTO.getRemark()); + oldItem.setUpdateBy(String.valueOf(userId)); + oldItem.setUpdateTime(now); + + int itemRows = wornDeclareItemMapper.updateWornDeclareItem(oldItem); + if (itemRows <= 0) + { + throw new RuntimeException("申报单明细更新失败"); + } + } + } + } + + /* ================== 6. 处理附件 ================== */ + // 这里先简单处理:删旧附件再重插 + wornDeclareFileMapper.deleteWornDeclareFileByBillId(billUp.getId()); + + List fileList = dto.getFileList(); + if (fileList != null && !fileList.isEmpty()) + { + Long sortNum = 1L; + for (WornDeclareFile file : fileList){ + if (file == null || StringUtils.isEmpty(file.getUrl())) + { + continue; + } + + if (StringUtils.isEmpty(file.getName())) + { + file.setFileName("附件" + sortNum); + } + + file.setBillId(billUp.getId()); + file.setBillNo(billUp.getBillNo()); + file.setSortNum(sortNum++); + file.setCreateBy(String.valueOf(userId)); + file.setCreateTime(now); + file.setIsDelete("0"); + file.setFileUrl(file.getUrl()); + int fileRows = wornDeclareFileMapper.insertWornDeclareFile(file); + if (fileRows <= 0) + { + throw new RuntimeException("申报单附件保存失败:" + file.getFileName()); + } + } + } + + return 1; + } +// private void handleDeclareUniqueCode(Long userId, WornDeclareItem item, Date now, String billNo) +// { +// if (item == null || item.getUniqueCode() == null) +// { +// return; +// } +// +// Integer code = item.getUniqueCode().intValue(); +// +// // 1. 查询唯一码是否存在 +// Long uniqueId = wornUniqueCodeMapper.selectIdByCode(code); +// if (uniqueId == null) +// { +// throw new RuntimeException("唯一码不存在:" + code); +// } +// +// // 2. 同步唯一码物料表(保留) +// WornUniqueCodeMaterial material = new WornUniqueCodeMaterial(); +// material.setUniqueCodeId(uniqueId); +// material.setMaterialId(item.getMaterialId()); +// +// material.setQuantity(item.getQuantity()); +// material.setUnitId(item.getUnitId()); +// material.setRemark(item.getRemark()); +// material.setIsDelete("0"); +// +// WornUniqueCodeMaterial dbMaterial = wornUniqueCodeMaterialMapper.selectByUniqueCodeId(uniqueId); +// if (dbMaterial == null) +// { +// material.setCreateBy(String.valueOf(userId)); +// material.setCreateTime(now); +// +// int materialRows = wornUniqueCodeMaterialMapper.insertWornUniqueCodeMaterial(material); +// if (materialRows <= 0) +// { +// throw new RuntimeException("唯一码物料表新增失败:" + code); +// } +// } +// else +// { +// material.setId(dbMaterial.getId()); +// material.setUpdateBy(String.valueOf(userId)); +// material.setUpdateTime(now); +// +// int materialRows = wornUniqueCodeMaterialMapper.updateWornUniqueCodeMaterial(material); +// if (materialRows <= 0) +// { +// throw new RuntimeException("唯一码物料表更新失败:" + code); +// } +// } +// +// // 3. 记录事件(保留) +// WornUniqueCodeEvent event = new WornUniqueCodeEvent(); +// event.setUniqueCodeId(uniqueId); +// event.setEventType("2"); // 这里你自己按事件字典调整,别和status混了 +// event.setEventStatus("1"); +// event.setEventDesc("生成/修改申报单:" + billNo); +// event.setOperatorId(userId); +// event.setCreateBy(String.valueOf(userId)); +// event.setCreateTime(now); +// event.setIsDelete("0"); +// +// int eventRows = eventMapper.insertWornUniqueCodeEvent(event); +// if (eventRows <= 0) +// { +// throw new RuntimeException("唯一码事件记录失败:" + code); +// } +// } + +// /** +// * 回滚申报单唯一码状态 +// */ +// private void rollbackDeclareUniqueCode(Long userId, Integer code, Date now) +// { +// if (code == null) +// { +// return; +// } +// +//// // 1. 回滚唯一码状态 +//// WornUniqueCode rollback = new WornUniqueCode(); +//// rollback.setCode(code); +//// rollback.setStatus("0"); // 这里按你们实际状态改 +//// rollback.setUpdateBy(String.valueOf(userId)); +//// rollback.setUpdateTime(now); +//// +//// int rollbackRows = wornUniqueCodeMapper.updateByCode(rollback); +//// if (rollbackRows <= 0) +//// { +//// throw new RuntimeException("唯一码状态回滚失败:" + code); +//// } +// +// // 2. 唯一码物料表逻辑删除 +// Long uniqueId = wornUniqueCodeMapper.selectIdByCode(code); +// if (uniqueId != null) +// { +// wornUniqueCodeMaterialMapper.deleteByUniqueCodeId(uniqueId); +// } +// } +// /** +// * 唯一码不变时,只同步唯一码物料表,不改唯一码状态 +// */ +// private void syncDeclareUniqueCodeMaterialByCode(Long userId, Integer code, WornDeclareItem item, Date now) +// { +// if (code == null || item == null) +// { +// return; +// } +// +// Long uniqueId = wornUniqueCodeMapper.selectIdByCode(code); +// if (uniqueId == null) +// { +// throw new RuntimeException("唯一码不存在:" + code); +// } +// +// WornUniqueCodeMaterial dbMaterial = wornUniqueCodeMaterialMapper.selectByUniqueCodeId(uniqueId); +// if (dbMaterial == null) +// { +// WornUniqueCodeMaterial material = new WornUniqueCodeMaterial(); +// material.setUniqueCodeId(uniqueId); +// material.setMaterialId(item.getMaterialId()); +// +// material.setQuantity(item.getQuantity()); +// material.setUnitId(item.getUnitId()); +// material.setRemark(item.getRemark()); +// material.setCreateBy(String.valueOf(userId)); +// material.setCreateTime(now); +// material.setIsDelete("0"); +// +// int rows = wornUniqueCodeMaterialMapper.insertWornUniqueCodeMaterial(material); +// if (rows <= 0) +// { +// throw new RuntimeException("唯一码物料表新增失败:" + code); +// } +// } +// else +// { +// WornUniqueCodeMaterial material = new WornUniqueCodeMaterial(); +// material.setId(dbMaterial.getId()); +// material.setUniqueCodeId(uniqueId); +// material.setMaterialId(item.getMaterialId()); +// +// material.setQuantity(item.getQuantity()); +// material.setUnitId(item.getUnitId()); +// material.setRemark(item.getRemark()); +// material.setUpdateBy(String.valueOf(userId)); +// material.setUpdateTime(now); +// material.setIsDelete("0"); +// +// int rows = wornUniqueCodeMaterialMapper.updateWornUniqueCodeMaterial(material); +// if (rows <= 0) +// { +// throw new RuntimeException("唯一码物料表更新失败:" + code); +// } +// } +// } + /** + * 批量删除申报单查看 + * + * @param ids 需要删除的申报单查看主键 + * @return 结果 + */ + @Override + public int deleteWornDeclareBillByIds(Long[] ids) + { + return wornDeclareBillMapper.deleteWornDeclareBillByIds(ids); + } + + /** + * 删除申报单查看信息 + * + * @param id 申报单查看主键 + * @return 结果 + */ + @Override + public int deleteWornDeclareBillById(Long id) + { + return wornDeclareBillMapper.deleteWornDeclareBillById(id); + } + /** + * 作废申报单 + * + * @param id 申报单ID + * @return 结果 + */ + + @Override + @Transactional(rollbackFor = Exception.class) + public int cancelWornDeclareBill(Long id) + { + if (id == null) + { + throw new RuntimeException("申报单ID不能为空"); + } + + Long userId = SecurityUtils.getLoginUser().getUser().getUserId(); + Date now = DateUtils.getNowDate(); + + // 1. 查询主表 + WornDeclareBill bill = wornDeclareBillMapper.selectWornDeclareBillById(id); + if (bill == null) + { + throw new RuntimeException("申报单不存在"); + } + + // 2. 重复作废校验 + if ("9".equals(bill.getStatus())) + { + throw new RuntimeException("申报单已作废,请勿重复操作"); + } + + // 3. 主表作废 + bill.setStatus("9"); + bill.setUpdateBy(String.valueOf(userId)); + bill.setUpdateTime(now); + + int billRows = wornDeclareBillMapper.cancelWornDeclareBill(bill); + if (billRows <= 0) + { + throw new RuntimeException("申报单作废失败"); + } + + // 4. 明细作废 + wornDeclareItemMapper.cancelWornDeclareItemByBillId( + id, + String.valueOf(userId), + now + ); + + return 1; + } +} diff --git a/src/main/java/com/shzg/project/worn/service/impl/WornDeclareFileServiceImpl.java b/src/main/java/com/shzg/project/worn/service/impl/WornDeclareFileServiceImpl.java new file mode 100644 index 0000000..5e195b6 --- /dev/null +++ b/src/main/java/com/shzg/project/worn/service/impl/WornDeclareFileServiceImpl.java @@ -0,0 +1,95 @@ +package com.shzg.project.worn.service.impl; + +import java.util.List; +import com.shzg.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.shzg.project.worn.mapper.WornDeclareFileMapper; +import com.shzg.project.worn.domain.WornDeclareFile; +import com.shzg.project.worn.service.IWornDeclareFileService; + +/** + * 申报单附件Service业务层处理 + * + * @author shzg + * @date 2026-04-14 + */ +@Service +public class WornDeclareFileServiceImpl implements IWornDeclareFileService +{ + @Autowired + private WornDeclareFileMapper wornDeclareFileMapper; + + /** + * 查询申报单附件 + * + * @param id 申报单附件主键 + * @return 申报单附件 + */ + @Override + public WornDeclareFile selectWornDeclareFileById(Long id) + { + return wornDeclareFileMapper.selectWornDeclareFileById(id); + } + + /** + * 查询申报单附件列表 + * + * @param wornDeclareFile 申报单附件 + * @return 申报单附件 + */ + @Override + public List selectWornDeclareFileList(WornDeclareFile wornDeclareFile) + { + return wornDeclareFileMapper.selectWornDeclareFileList(wornDeclareFile); + } + + /** + * 新增申报单附件 + * + * @param wornDeclareFile 申报单附件 + * @return 结果 + */ + @Override + public int insertWornDeclareFile(WornDeclareFile wornDeclareFile) + { + wornDeclareFile.setCreateTime(DateUtils.getNowDate()); + return wornDeclareFileMapper.insertWornDeclareFile(wornDeclareFile); + } + + /** + * 修改申报单附件 + * + * @param wornDeclareFile 申报单附件 + * @return 结果 + */ + @Override + public int updateWornDeclareFile(WornDeclareFile wornDeclareFile) + { + return wornDeclareFileMapper.updateWornDeclareFile(wornDeclareFile); + } + + /** + * 批量删除申报单附件 + * + * @param ids 需要删除的申报单附件主键 + * @return 结果 + */ + @Override + public int deleteWornDeclareFileByIds(Long[] ids) + { + return wornDeclareFileMapper.deleteWornDeclareFileByIds(ids); + } + + /** + * 删除申报单附件信息 + * + * @param id 申报单附件主键 + * @return 结果 + */ + @Override + public int deleteWornDeclareFileById(Long id) + { + return wornDeclareFileMapper.deleteWornDeclareFileById(id); + } +} diff --git a/src/main/java/com/shzg/project/worn/service/impl/WornDeclareItemServiceImpl.java b/src/main/java/com/shzg/project/worn/service/impl/WornDeclareItemServiceImpl.java new file mode 100644 index 0000000..87b0850 --- /dev/null +++ b/src/main/java/com/shzg/project/worn/service/impl/WornDeclareItemServiceImpl.java @@ -0,0 +1,96 @@ +package com.shzg.project.worn.service.impl; + +import java.util.List; +import com.shzg.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.shzg.project.worn.mapper.WornDeclareItemMapper; +import com.shzg.project.worn.domain.WornDeclareItem; +import com.shzg.project.worn.service.IWornDeclareItemService; + +/** + * 申报单物料明细Service业务层处理 + * + * @author shzg + * @date 2026-04-14 + */ +@Service +public class WornDeclareItemServiceImpl implements IWornDeclareItemService +{ + @Autowired + private WornDeclareItemMapper wornDeclareItemMapper; + + /** + * 查询申报单物料明细 + * + * @param id 申报单物料明细主键 + * @return 申报单物料明细 + */ + @Override + public WornDeclareItem selectWornDeclareItemById(Long id) + { + return wornDeclareItemMapper.selectWornDeclareItemById(id); + } + + /** + * 查询申报单物料明细列表 + * + * @param wornDeclareItem 申报单物料明细 + * @return 申报单物料明细 + */ + @Override + public List selectWornDeclareItemList(WornDeclareItem wornDeclareItem) + { + return wornDeclareItemMapper.selectWornDeclareItemList(wornDeclareItem); + } + + /** + * 新增申报单物料明细 + * + * @param wornDeclareItem 申报单物料明细 + * @return 结果 + */ + @Override + public int insertWornDeclareItem(WornDeclareItem wornDeclareItem) + { + wornDeclareItem.setCreateTime(DateUtils.getNowDate()); + return wornDeclareItemMapper.insertWornDeclareItem(wornDeclareItem); + } + + /** + * 修改申报单物料明细 + * + * @param wornDeclareItem 申报单物料明细 + * @return 结果 + */ + @Override + public int updateWornDeclareItem(WornDeclareItem wornDeclareItem) + { + wornDeclareItem.setUpdateTime(DateUtils.getNowDate()); + return wornDeclareItemMapper.updateWornDeclareItem(wornDeclareItem); + } + + /** + * 批量删除申报单物料明细 + * + * @param ids 需要删除的申报单物料明细主键 + * @return 结果 + */ + @Override + public int deleteWornDeclareItemByIds(Long[] ids) + { + return wornDeclareItemMapper.deleteWornDeclareItemByIds(ids); + } + + /** + * 删除申报单物料明细信息 + * + * @param id 申报单物料明细主键 + * @return 结果 + */ + @Override + public int deleteWornDeclareItemById(Long id) + { + return wornDeclareItemMapper.deleteWornDeclareItemById(id); + } +} diff --git a/src/main/java/com/shzg/project/worn/service/impl/WornInboundBillServiceImpl.java b/src/main/java/com/shzg/project/worn/service/impl/WornInboundBillServiceImpl.java index 02ce04f..bc22dc4 100644 --- a/src/main/java/com/shzg/project/worn/service/impl/WornInboundBillServiceImpl.java +++ b/src/main/java/com/shzg/project/worn/service/impl/WornInboundBillServiceImpl.java @@ -629,7 +629,7 @@ public class WornInboundBillServiceImpl implements IWornInboundBillService document.add(table); document.close(); - + System.out.println("PDF生成成功,字节长度:" + out.size()); return out.toByteArray(); } diff --git a/src/main/java/com/shzg/project/worn/service/impl/WornOutboundItemServiceImpl.java b/src/main/java/com/shzg/project/worn/service/impl/WornOutboundItemServiceImpl.java index da234e7..8be365f 100644 --- a/src/main/java/com/shzg/project/worn/service/impl/WornOutboundItemServiceImpl.java +++ b/src/main/java/com/shzg/project/worn/service/impl/WornOutboundItemServiceImpl.java @@ -13,13 +13,14 @@ import com.shzg.project.unique.mapper.WornUniqueCodeEventMapper; import com.shzg.project.unique.mapper.WornUniqueCodeMapper; import com.shzg.project.unique.mapper.WornUniqueCodeMaterialMapper; import com.shzg.project.worn.domain.WornOutboundBill; +import com.shzg.project.worn.domain.WornTechnicalAppraisal; +import com.shzg.project.worn.domain.WornTechnicalAppraisalFile; +import com.shzg.project.worn.domain.dto.AppraisalFileDTO; import com.shzg.project.worn.domain.dto.WornInboundItemDTO; import com.shzg.project.worn.domain.dto.WornOutboundUpdateDTO; -import com.shzg.project.worn.mapper.WornInboundBillMapper; -import com.shzg.project.worn.mapper.WornOutboundBillMapper; +import com.shzg.project.worn.mapper.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.shzg.project.worn.mapper.WornOutboundItemMapper; import com.shzg.project.worn.domain.WornOutboundItem; import com.shzg.project.worn.service.IWornOutboundItemService; @@ -44,6 +45,10 @@ public class WornOutboundItemServiceImpl implements IWornOutboundItemService private WornUniqueCodeMaterialMapper wornUniqueCodeMaterialMapper; @Autowired private WornOutboundBillMapper wornOutboundBillMapper; + @Autowired + private WornTechnicalAppraisalMapper wornTechnicalAppraisalMapper; + @Autowired + private WornTechnicalAppraisalFileMapper wornTechnicalAppraisalFileMapper; /** * 查询出库单明细 * @@ -244,6 +249,12 @@ public class WornOutboundItemServiceImpl implements IWornOutboundItemService { return wornOutboundItemMapper.deleteWornOutboundItemById(id); } + /** + * 查询出库单明细列表 + * + * @param wornOutboundItem 出库单明细 + * @return 出库单明细 + */ /** * 查询出库单明细列表 * @@ -259,7 +270,7 @@ public class WornOutboundItemServiceImpl implements IWornOutboundItemService return null; } - // 1. 查询明细列表 + // 1. 查询出库单明细列表 WornOutboundItem param = new WornOutboundItem(); param.setBillNo(billNo); @@ -316,8 +327,51 @@ public class WornOutboundItemServiceImpl implements IWornOutboundItemService dto.setItemList(dtoList); + // 5. 查询技术鉴定表信息 + WornTechnicalAppraisal appraisalQuery = new WornTechnicalAppraisal(); + appraisalQuery.setBillNo(billNo); + + List appraisalList = + wornTechnicalAppraisalMapper.selectWornTechnicalAppraisalList(appraisalQuery); + + if (appraisalList != null && !appraisalList.isEmpty()) + { + WornTechnicalAppraisal appraisal = appraisalList.get(0); + + dto.setAppraisalId(appraisal.getId()); + dto.setAppraisalNo(appraisal.getAppraisalNo()); + dto.setAppraisalDesc(appraisal.getAppraisalDesc()); + dto.setAppraisalRemark(appraisal.getRemark()); + dto.setAppraisalTime(appraisal.getCreateTime()); + // 查询鉴定表附件 + List fileList = + wornTechnicalAppraisalFileMapper.selectWornTechnicalAppraisalFileByAppraisalId(appraisal.getId()); + + List appraisalFileList = new ArrayList<>(); + + if (fileList != null && !fileList.isEmpty()) + { + for (WornTechnicalAppraisalFile file : fileList) + { + if (file == null) + { + continue; + } + + AppraisalFileDTO fileDTO = new AppraisalFileDTO(); + fileDTO.setName(file.getFileName()); + fileDTO.setUrl(file.getFileUrl()); + + appraisalFileList.add(fileDTO); + } + } + + dto.setAppraisalFileList(appraisalFileList); + } + return dto; } + /** * 出库明细删除/替换时,唯一码状态回滚:3 -> 2 */ diff --git a/src/main/java/com/shzg/project/worn/service/impl/WornTechnicalAppraisalServiceImpl.java b/src/main/java/com/shzg/project/worn/service/impl/WornTechnicalAppraisalServiceImpl.java index 8adc626..64fafef 100644 --- a/src/main/java/com/shzg/project/worn/service/impl/WornTechnicalAppraisalServiceImpl.java +++ b/src/main/java/com/shzg/project/worn/service/impl/WornTechnicalAppraisalServiceImpl.java @@ -1,5 +1,6 @@ package com.shzg.project.worn.service.impl; +import java.io.File; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -9,6 +10,7 @@ import com.shzg.common.utils.DateUtils; import com.shzg.common.utils.SecurityUtils; import com.shzg.common.utils.StringUtils; import com.shzg.framework.web.page.TableDataInfo; +import com.shzg.project.worn.domain.FileUploadConfig; import com.shzg.project.worn.domain.WornOutboundBill; import com.shzg.project.worn.domain.WornTechnicalAppraisalFile; import com.shzg.project.worn.domain.dto.AppraisalFileDTO; @@ -37,6 +39,8 @@ public class WornTechnicalAppraisalServiceImpl implements IWornTechnicalAppraisa private WornOutboundBillMapper wornOutboundBillMapper; @Autowired private WornTechnicalAppraisalFileMapper wornTechnicalAppraisalFileMapper; + @Autowired + private FileUploadConfig fileUploadConfig; /** * 查询技术鉴定 * @@ -99,20 +103,117 @@ public class WornTechnicalAppraisalServiceImpl implements IWornTechnicalAppraisa return wornTechnicalAppraisalMapper.deleteWornTechnicalAppraisalByIds(ids); } - /** - * 删除技术鉴定信息 - * - * @param id 技术鉴定主键 - * @return 结果 - */ @Override + @Transactional(rollbackFor = Exception.class) public int deleteWornTechnicalAppraisalById(Long id) { - return wornTechnicalAppraisalMapper.deleteWornTechnicalAppraisalById(id); + if (id == null) + { + throw new RuntimeException("技术鉴定表ID不能为空"); + } + + Long userId = SecurityUtils.getLoginUser().getUser().getUserId(); + Date now = DateUtils.getNowDate(); + + /* ================== 1. 查询主表 ================== */ + WornTechnicalAppraisal appraisal = wornTechnicalAppraisalMapper.selectWornTechnicalAppraisalById(id); + if (appraisal == null) + { + throw new RuntimeException("技术鉴定表不存在"); + } + + if ("1".equals(appraisal.getIsDelete())) + { + throw new RuntimeException("技术鉴定表已删除,请勿重复操作"); + } + + /* ================== 2. 查询附件 ================== */ + List fileList = + wornTechnicalAppraisalFileMapper.selectWornTechnicalAppraisalFileByAppraisalId(id); + + /* ================== 3. 删除物理文件 + 逻辑删除附件 ================== */ + if (fileList != null && !fileList.isEmpty()) + { + for (WornTechnicalAppraisalFile file : fileList) + { + if (file == null) + { + continue; + } + + if (StringUtils.isNotEmpty(file.getFileUrl())) + { + deletePhysicalFile(file.getFileUrl()); + } + + WornTechnicalAppraisalFile updateFile = new WornTechnicalAppraisalFile(); + updateFile.setId(file.getId()); + updateFile.setIsDelete("1"); + + int fileRows = wornTechnicalAppraisalFileMapper.removeWornTechnicalAppraisalFileById(updateFile); + if (fileRows <= 0) + { + throw new RuntimeException("删除技术鉴定附件失败,附件ID:" + file.getId()); + } + } + } + + /* ================== 4. 逻辑删除主表 ================== */ + WornTechnicalAppraisal updateAppraisal = new WornTechnicalAppraisal(); + updateAppraisal.setId(id); + updateAppraisal.setIsDelete("1"); + updateAppraisal.setUpdateBy(String.valueOf(userId)); + updateAppraisal.setUpdateTime(now); + + int rows = wornTechnicalAppraisalMapper.removeWornTechnicalAppraisalById(updateAppraisal); + if (rows <= 0) + { + throw new RuntimeException("删除技术鉴定表失败"); + } + + return 1; + } + /** + * 删除物理文件 + */ + private void deletePhysicalFile(String fileUrl) + { + try + { + if (StringUtils.isEmpty(fileUrl)) + { + return; + } + + String uploadPath = fileUploadConfig.getUploadPath(); + + // 只处理 /profile/ 开头的路径 + int index = fileUrl.indexOf("/profile/"); + if (index < 0) + { + return; + } + + String relativePath = fileUrl.substring(index + "/profile/".length()); + File physicalFile = new File(uploadPath, relativePath); + + if (physicalFile.exists() && physicalFile.isFile()) + { + boolean deleted = physicalFile.delete(); + if (!deleted) + { + throw new RuntimeException("物理文件删除失败:" + physicalFile.getAbsolutePath()); + } + } + } + catch (Exception e) + { + throw new RuntimeException("删除物理文件失败:" + e.getMessage()); + } } @Override @Transactional(rollbackFor = Exception.class) - public int insertWornTechnicalAppraisalWithFiles(WornTechnicalAppraisal wornTechnicalAppraisal) + public WornTechnicalAppraisalSimpleDTO insertWornTechnicalAppraisalWithFiles(WornTechnicalAppraisal wornTechnicalAppraisal) { /* ================== 1. 参数校验 ================== */ if (wornTechnicalAppraisal == null) @@ -130,17 +231,21 @@ public class WornTechnicalAppraisalServiceImpl implements IWornTechnicalAppraisa Long deptId = SecurityUtils.getLoginUser().getUser().getDeptId(); Date now = DateUtils.getNowDate(); - /* ================== 3. 校验一张出库单只能有一张技术鉴定表 ================== */ + /* ================== 3. 校验唯一 ================== */ WornTechnicalAppraisal query = new WornTechnicalAppraisal(); query.setBillNo(wornTechnicalAppraisal.getBillNo()); - List oldList = wornTechnicalAppraisalMapper.selectWornTechnicalAppraisalList(query); + List oldList = + wornTechnicalAppraisalMapper.selectWornTechnicalAppraisalList(query); + if (oldList != null && !oldList.isEmpty()) { throw new RuntimeException("该出库单已存在技术鉴定表,请勿重复新增"); } - /* ================== 4. 查询出库单(可选,但建议保留) ================== */ - WornOutboundBill outboundBill = wornOutboundBillMapper.selectWornOutboundBillByBillNo(wornTechnicalAppraisal.getBillNo()); + /* ================== 4. 查询出库单 ================== */ + WornOutboundBill outboundBill = + wornOutboundBillMapper.selectWornOutboundBillByBillNo(wornTechnicalAppraisal.getBillNo()); + if (outboundBill == null) { throw new RuntimeException("关联出库单不存在:" + wornTechnicalAppraisal.getBillNo()); @@ -168,38 +273,75 @@ public class WornTechnicalAppraisalServiceImpl implements IWornTechnicalAppraisa } Long appraisalId = wornTechnicalAppraisal.getId(); - if (appraisalId == null) - { - throw new RuntimeException("技术鉴定表新增失败,ID未回填"); - } /* ================== 6. 保存附件 ================== */ - List fileList = wornTechnicalAppraisal.getFileList(); + List fileList = wornTechnicalAppraisal.getFileList(); if (fileList != null && !fileList.isEmpty()) { - Long sortNum = 1L; - for (WornTechnicalAppraisalFile file : fileList) - { - if (file == null || StringUtils.isEmpty(file.getFileUrl())) + Long sortNum = 1L; + + for (AppraisalFileDTO files : fileList){ + if (files == null || StringUtils.isEmpty(files.getUrl())) { continue; } + WornTechnicalAppraisalFile wornTechnicalAppraisalFile = new WornTechnicalAppraisalFile(); + wornTechnicalAppraisalFile.setAppraisalId(appraisalId); + wornTechnicalAppraisalFile.setSortNum(sortNum++); + wornTechnicalAppraisalFile.setCreateBy(String.valueOf(userId)); + wornTechnicalAppraisalFile.setCreateTime(now); + wornTechnicalAppraisalFile.setIsDelete("0"); + wornTechnicalAppraisalFile.setFileName(files.getName()); + wornTechnicalAppraisalFile.setFileUrl(files.getUrl()); + String fileName = files.getName(); // 或从url截取 + String fileType = ""; - file.setAppraisalId(appraisalId); - file.setSortNum(sortNum++); - file.setCreateBy(String.valueOf(userId)); - file.setCreateTime(now); - file.setIsDelete("0"); + if (StringUtils.isNotEmpty(fileName) && fileName.contains(".")) { + fileType = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase(); + } - int fileRows = wornTechnicalAppraisalFileMapper.insertWornTechnicalAppraisalFile(file); + wornTechnicalAppraisalFile.setFileType(fileType); + int fileRows = wornTechnicalAppraisalFileMapper.insertWornTechnicalAppraisalFile(wornTechnicalAppraisalFile); if (fileRows <= 0) { - throw new RuntimeException("技术鉴定附件保存失败:" + file.getFileName()); + throw new RuntimeException("附件保存失败:" + wornTechnicalAppraisalFile.getFileName()); } } } - return 1; + /* ================== 7. 组装返回 DTO ================== */ + WornTechnicalAppraisal saved = + wornTechnicalAppraisalMapper.selectWornTechnicalAppraisalById(appraisalId); + + List savedFiles = + wornTechnicalAppraisalFileMapper.selectWornTechnicalAppraisalFileByAppraisalId(appraisalId); + + WornTechnicalAppraisalSimpleDTO dto = new WornTechnicalAppraisalSimpleDTO(); + dto.setId(saved.getId()); + dto.setAppraisalNo(saved.getAppraisalNo()); + dto.setCreateTime(saved.getCreateTime()); + dto.setAppraisalDesc(saved.getAppraisalDesc()); + dto.setRemark(saved.getRemark()); + + List fileDtoList = new ArrayList<>(); + + if (savedFiles != null && !savedFiles.isEmpty()) + { + for (WornTechnicalAppraisalFile file : savedFiles) + { + if (file == null) continue; + + AppraisalFileDTO fileDTO = new AppraisalFileDTO(); + fileDTO.setName(file.getFileName()); + fileDTO.setUrl(file.getFileUrl()); + + fileDtoList.add(fileDTO); + } + } + + dto.setFileUrlList(fileDtoList); + + return dto; } @Override public TableDataInfo selectMyTechnicalAppraisalSimplePageList() diff --git a/src/main/resources/mybatis/unique/WornUniqueCodeMaterialMapper.xml b/src/main/resources/mybatis/unique/WornUniqueCodeMaterialMapper.xml index 743fb57..e4c1467 100644 --- a/src/main/resources/mybatis/unique/WornUniqueCodeMaterialMapper.xml +++ b/src/main/resources/mybatis/unique/WornUniqueCodeMaterialMapper.xml @@ -174,4 +174,17 @@ update_time = NOW() WHERE unique_code_id = #{uniqueCodeId} + + + update worn_unique_code_material + set is_delete = '1' + where unique_code_id = #{uniqueCodeId} + and is_delete = '0' + \ No newline at end of file diff --git a/src/main/resources/mybatis/worn/WornDeclareBillMapper.xml b/src/main/resources/mybatis/worn/WornDeclareBillMapper.xml new file mode 100644 index 0000000..fc96474 --- /dev/null +++ b/src/main/resources/mybatis/worn/WornDeclareBillMapper.xml @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + select id, bill_no, project_id, contact_name, contact_phone, delivery_time, address, remark, status, create_by, create_time, update_by, update_time, is_delete from worn_declare_bill + + + + + + + + insert into worn_declare_bill + + bill_no, + project_id, + contact_name, + contact_phone, + delivery_time, + address, + remark, + status, + create_by, + create_time, + is_delete, + + + #{billNo}, + #{projectId}, + #{contactName}, + #{contactPhone}, + #{deliveryTime}, + #{address}, + #{remark}, + #{status}, + #{createBy}, + #{createTime}, + #{isDelete}, + + + + + update worn_declare_bill + + bill_no = #{billNo}, + project_id = #{projectId}, + contact_name = #{contactName}, + contact_phone = #{contactPhone}, + delivery_time = #{deliveryTime}, + address = #{address}, + remark = #{remark}, + status = #{status}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + is_delete = #{isDelete}, + + where id = #{id} + + + + delete from worn_declare_bill where id = #{id} + + + + delete from worn_declare_bill where id in + + #{id} + + + + + update worn_declare_bill + set status = '9', + update_by = #{updateBy}, + update_time = #{updateTime} + where id = #{id} + and is_delete = '0' + + \ No newline at end of file diff --git a/src/main/resources/mybatis/worn/WornDeclareFileMapper.xml b/src/main/resources/mybatis/worn/WornDeclareFileMapper.xml new file mode 100644 index 0000000..b833679 --- /dev/null +++ b/src/main/resources/mybatis/worn/WornDeclareFileMapper.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + select id, bill_id, bill_no, file_name, file_url, file_type, sort_num, remark, create_by, create_time, is_delete from worn_declare_file + + + + + + + + insert into worn_declare_file + + bill_id, + bill_no, + file_name, + file_url, + file_type, + sort_num, + remark, + create_by, + create_time, + is_delete, + + + #{billId}, + #{billNo}, + #{fileName}, + #{fileUrl}, + #{fileType}, + #{sortNum}, + #{remark}, + #{createBy}, + #{createTime}, + #{isDelete}, + + + + + + update worn_declare_file + + bill_id = #{billId}, + bill_no = #{billNo}, + file_name = #{fileName}, + file_url = #{fileUrl}, + file_type = #{fileType}, + sort_num = #{sortNum}, + remark = #{remark}, + create_by = #{createBy}, + create_time = #{createTime}, + is_delete = #{isDelete}, + + where id = #{id} + + + + delete from worn_declare_file where id = #{id} + + + + delete from worn_declare_file where id in + + #{id} + + + + + update worn_declare_file + set is_delete = '1' + where bill_id = #{billId} + and is_delete = '0' + + \ No newline at end of file diff --git a/src/main/resources/mybatis/worn/WornDeclareItemMapper.xml b/src/main/resources/mybatis/worn/WornDeclareItemMapper.xml new file mode 100644 index 0000000..0336242 --- /dev/null +++ b/src/main/resources/mybatis/worn/WornDeclareItemMapper.xml @@ -0,0 +1,245 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, bill_id, bill_no, material_id, material_name, material_code, material_short_name, specification, model, type_name, type_parent_names, unique_code, quantity, unit_id, unit_name, remark, status, create_by, create_time, update_by, update_time, is_delete from worn_declare_item + + + + + + + + insert into worn_declare_item + + bill_id, + bill_no, + material_id, + material_name, + material_code, + material_short_name, + specification, + model, + type_name, + type_parent_names, + unique_code, + quantity, + unit_id, + unit_name, + remark, + status, + create_by, + create_time, + is_delete, + + + #{billId}, + #{billNo}, + #{materialId}, + #{materialName}, + #{materialCode}, + #{materialShortName}, + #{specification}, + #{model}, + #{typeName}, + #{typeParentNames}, + #{uniqueCode}, + #{quantity}, + #{unitId}, + #{unitName}, + #{remark}, + #{status}, + #{createBy}, + #{createTime}, + #{isDelete}, + + + + + update worn_declare_item + + bill_id = #{billId}, + bill_no = #{billNo}, + material_id = #{materialId}, + material_name = #{materialName}, + material_code = #{materialCode}, + material_short_name = #{materialShortName}, + specification = #{specification}, + model = #{model}, + type_name = #{typeName}, + type_parent_names = #{typeParentNames}, + unique_code = #{uniqueCode}, + quantity = #{quantity}, + unit_id = #{unitId}, + unit_name = #{unitName}, + remark = #{remark}, + status = #{status}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + is_delete = #{isDelete}, + + where id = #{id} + + + + delete from worn_declare_item where id = #{id} + + + + delete from worn_declare_item where id in + + #{id} + + + + + update worn_declare_item + set is_delete = '1', + status = '9', + update_by = #{updateBy}, + update_time = #{updateTime} + where bill_id = #{billId} + and is_delete = '0' + + + update worn_declare_item + set status = '9', + update_by = #{updateBy}, + update_time = #{updateTime} + where bill_id = #{billId} + and is_delete = '0' + + \ No newline at end of file diff --git a/src/main/resources/mybatis/worn/WornOutboundBillMapper.xml b/src/main/resources/mybatis/worn/WornOutboundBillMapper.xml index 79cfb55..2895beb 100644 --- a/src/main/resources/mybatis/worn/WornOutboundBillMapper.xml +++ b/src/main/resources/mybatis/worn/WornOutboundBillMapper.xml @@ -41,6 +41,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and is_delete = #{isDelete} and project_id = #{projectId} + order by create_time desc, id desc + resultMap="WornTechnicalAppraisalFileResult"> SELECT id, diff --git a/src/main/resources/mybatis/worn/WornTechnicalAppraisalMapper.xml b/src/main/resources/mybatis/worn/WornTechnicalAppraisalMapper.xml index 9554c7b..70b3ec5 100644 --- a/src/main/resources/mybatis/worn/WornTechnicalAppraisalMapper.xml +++ b/src/main/resources/mybatis/worn/WornTechnicalAppraisalMapper.xml @@ -43,10 +43,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by id desc - + @@ -102,7 +120,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} - + + update worn_technical_appraisal + set is_delete = #{isDelete}, + update_by = #{updateBy}, + update_time = #{updateTime} + where id = #{id} + delete from worn_technical_appraisal where id = #{id}